/*******************************************************************************

    Copyright 2021 Ben Wojtowicz

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

*******************************************************************************

    File: liblte_phy_tests.cc

    Description: Contains all the tests for the LTE PHY library.

    Revision History
    ----------    -------------    --------------------------------------------
    02/14/2021    Ben Wojtowicz    Created file.

*******************************************************************************/

/*******************************************************************************
                              INCLUDES
*******************************************************************************/

#include "liblte_phy.h"
#include "liblte_mac.h"
#include "EUTRA_RRC_Definitions.h"

/*******************************************************************************
                              DEFINES
*******************************************************************************/

#define N_ID_CELL 7
#define N_UL_ANT 1
#define N_DL_ANT 1

/*******************************************************************************
                              TYPEDEFS
*******************************************************************************/


/*******************************************************************************
                              GLOBAL VARIABLES
*******************************************************************************/


/*******************************************************************************
                              FUNCTIONS
*******************************************************************************/

int init_test(LIBLTE_PHY_STRUCT **phy_struct)
{
    if(LIBLTE_SUCCESS != liblte_phy_init(phy_struct, LIBLTE_PHY_FS_7_68MHZ, N_ID_CELL, N_DL_ANT,
                                         LIBLTE_PHY_N_RB_DL_5MHZ,
                                         LIBLTE_PHY_N_SC_RB_DL_NORMAL_CP,
                                         1))
        return -1;
    if(phy_struct == NULL)
        return -1;
    if((*phy_struct)->fs != 7680000 ||
       (*phy_struct)->N_samps_per_symb != LIBLTE_PHY_N_SAMPS_PER_SYMB_7_68MHZ ||
       (*phy_struct)->N_samps_cp_l_0 != LIBLTE_PHY_N_SAMPS_CP_L_0_7_68MHZ ||
       (*phy_struct)->N_samps_cp_l_else != LIBLTE_PHY_N_SAMPS_CP_L_ELSE_7_68MHZ ||
       (*phy_struct)->N_samps_per_slot != LIBLTE_PHY_N_SAMPS_PER_SLOT_7_68MHZ ||
       (*phy_struct)->N_samps_per_subfr != LIBLTE_PHY_N_SAMPS_PER_SUBFR_7_68MHZ ||
       (*phy_struct)->N_samps_per_frame != LIBLTE_PHY_N_SAMPS_PER_FRAME_7_68MHZ ||
       (*phy_struct)->N_sc_rb_dl != LIBLTE_PHY_N_SC_RB_DL_NORMAL_CP ||
       (*phy_struct)->N_sc_rb_ul != LIBLTE_PHY_N_SC_RB_UL ||
       (*phy_struct)->N_rb_dl != LIBLTE_PHY_N_RB_DL_5MHZ ||
       (*phy_struct)->N_rb_ul != LIBLTE_PHY_N_RB_DL_5MHZ ||
       (*phy_struct)->FFT_size != LIBLTE_PHY_FFT_SIZE_7_68MHZ ||
       (*phy_struct)->FFT_pad_size != 106 || (*phy_struct)->N_ant != N_DL_ANT ||
       (*phy_struct)->ul_init || (*phy_struct)->N_group_phich != 4 ||
       (*phy_struct)->N_sf_phich != 4 || (*phy_struct)->N_id_cell_crs != N_ID_CELL ||
       (*phy_struct)->s2s_in == NULL || (*phy_struct)->s2s_out == NULL)
        return -1;
    uint32 pdcch_permute_34[10] = {3,19,11,27,7,23,15,31,5,21};
    uint32 pdcch_permute_109[10] = {14,46,78,30,62,94,22,54,86,6};
    uint32 pdcch_permute_184[10] = {25,57,89,121,153,9,41,73,105,137};
    for(uint32 i=0; i<10; i++)
        if(pdcch_permute_34[i] != (*phy_struct)->pdcch_permute_map[34][i] ||
           pdcch_permute_109[i] != (*phy_struct)->pdcch_permute_map[109][i] ||
           pdcch_permute_184[i] != (*phy_struct)->pdcch_permute_map[184][i])
            return -1;
//    uint32 crs_re_storage[20][3][10] = {{{0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3}},
//                                        {{0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3}},
//                                        {{0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3}},
//                                        {{0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3}},
//                                        {{0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3}},
//                                        {{0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3}},
//                                        {{0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3}},
//                                        {{0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3}},
//                                        {{0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3}},
//                                        {{0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3}},
//                                        {{0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3}},
//                                        {{0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3}},
//                                        {{0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3}},
//                                        {{0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3}},
//                                        {{0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3}},
//                                        {{0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3}},
//                                        {{0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3}},
//                                        {{0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3}},
//                                        {{0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3}},
//                                        {{0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3}}};
//    uint32 crs_im_storage[20][3][10] = {{{0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3}},
//                                        {{0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3}},
//                                        {{0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3}},
//                                        {{0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3}},
//                                        {{0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3}},
//                                        {{0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3}},
//                                        {{0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3}},
//                                        {{0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3}},
//                                        {{0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3}},
//                                        {{0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3}},
//                                        {{0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3}},
//                                        {{0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3}},
//                                        {{0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3}},
//                                        {{0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3}},
//                                        {{0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3}},
//                                        {{0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3}},
//                                        {{0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3}},
//                                        {{0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3}},
//                                        {{0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3}},
//                                        {{0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3},
//                                         {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3},
//                                         {0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3}}};
//    for(uint32 i=0; i<20;i++)
//        for(uint32 j=0; j<3; j++)
//        {
//            uint32 *crs_re_ptr = (uint32 *)(&(*phy_struct)->crs_re_storage[i][j][0]);
//            uint32 *crs_im_ptr = (uint32 *)(&(*phy_struct)->crs_im_storage[i][j][0]);
//            for(uint32 k=0;k<10;k++)
//                if(crs_re_ptr[k] != crs_re_storage[i][j][k] ||
//                   crs_im_ptr[k] != crs_im_storage[i][j][k])
//                    return -1;
//        }
    if(LIBLTE_SUCCESS != liblte_phy_ul_init(*phy_struct, 7, 0, 0, 1, false, 0, false, false,
                                            0, 0, 0, 0))
        return -1;
    if(!(*phy_struct)->ul_init || (*phy_struct)->transform_precoding_in == NULL ||
       (*phy_struct)->transform_precoding_out == NULL)
        return -1;
//    uint32 pusch_dmrs_0_re[10][10][10] = {{{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0x3F3504F4,0xBF3504F5,0xBF3504F3,0x3F3504F7,0x3F3504EB,0x3F3504F4,0x3F350503,0x3F3504EB,0x3F3504F4},
//                                           {0x3F800000,0x3D4F756A,0x3E1B0FD6,0x3F744278,0xBF5FD531,0xBF30601B,0xBF5FD52E,0xBE1B103A,0xBE805570,0x3F423DFA},
//                                           {0x3F800000,0x3D08DE0E,0x3DCCFEE1,0x3F7ADEC5,0xBF71D5D7,0xBEF60EBC,0xBF2547DD,0xBF17DAB3,0x3EB80462,0x3F7F6DA6},
//                                           {0x3F800000,0x3CDA1319,0x3DA366CF,0x3F7CBD9E,0xBF76FB09,0xBEC713E1,0xBF07C9A9,0xBF3C1A38,0x3F13254F,0x3F6E6C0C},
//                                           {0x3F800000,0x3CB53932,0x3D87D43E,0x3F7DBF73,0xBF79C2A7,0xBEA6CF40,0xBEE56901,0xBF506E9A,0x3F330189,0x3F56CD6B},
//                                           {0x3F800000,0x3C9B0696,0x3D686D8C,0x3F7E59F2,0xBF7B6DDE,0xBE8F66BD,0xBEC62B74,0xBF5CE40B,0x3F46D909,0x3F409AA1},
//                                           {0x3F800000,0x3D58C62D,0x3E21F938,0x3F733091,0xBF5CF218,0xBF369C0E,0xBF65841F,0xBDB47F80,0xBEA87E40,0x3F302A06},
//                                           {0x3F800000,0x3D963109,0x3E5FAC03,0x3F67925A,0xBF3E13D0,0xBF644499,0xBF7FE3C1,0x3EEE7310,0xBF60C47E,0xBE24A43B}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2},
//                                           {0xBF3504F3,0xBE8483EC,0x3F7746EA,0x3F3504F5,0x3E8483E7,0xBE8483E9,0x3F3504F7,0xBE8483D1,0x3E8483FD,0xBF3504F4},
//                                           {0x3F800000,0x3F63E6AB,0x3F47C35F,0xBF744279,0x3C8A5C40,0x3E910049,0xBF5FD52B,0x3F47C355,0xBF368AAC,0xBF423DFA},
//                                           {0x3F800000,0x3F61DB16,0x3F4FC6DF,0xBF7ADEC6,0x3E40C66A,0x3F04E850,0xBF2547DA,0x3ECD1E20,0xBF7CE488,0xBF7F6DA6},
//                                           {0x3F800000,0x3F610807,0x3F52C87A,0xBF7CBD9E,0x3E8251D8,0x3F1A7CD6,0xBF07C9A5,0x3E615418,0xBF7EFE18,0xBF6E6C0C},
//                                           {0x3F800000,0x3F607AD9,0x3F54B99C,0xBF7DBF73,0x3E9875D8,0x3F27E751,0xBEE568F8,0x3DC40A30,0xBF77FEAA,0xBF56CD6C},
//                                           {0x3F800000,0x3F6015C8,0x3F5614F7,0xBF7E59F2,0x3EA80385,0x3F30FA8C,0xBEC62B6A,0x3BCEAF40,0xBF6F0DEA,0xBF409AA1},
//                                           {0x3F800000,0x3F642A7F,0x3F46AA2C,0xBF733092,0xBBC0C500,0x3E802558,0xBF65841C,0x3F518F08,0xBF273AEC,0xBF302A06},
//                                           {0x3F800000,0x3F667E14,0x3F3C63D6,0xBF67925B,0xBE55E1B0,0xBD5C5F98,0xBF7FE3C1,0x3F7FCDCA,0x3CC86970,0x3E24A43D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F2,0x3F3504F4,0xBF3504F3,0x3F3504F5,0x3F3504F7,0xBF3504F3,0x3F3504EB,0x3F3504EF,0xBF3504F3},
//                                           {0x3F800000,0x3F7FABE3,0xBE1B0FDC,0x3E994620,0xBF5FD52F,0xBF398C09,0x3F5FD52E,0xBF7D0C41,0xBE80557C,0xBF26C059},
//                                           {0x3F800000,0x3F7FDB67,0xBDCCFEEC,0x3E4BF768,0xBF71D5D6,0xBF607FCD,0x3F2547DE,0xBF4E190B,0x3EB80457,0x3D88CA99},
//                                           {0x3F800000,0x3F7FE8C6,0xBDA366DA,0x3E22E18A,0xBF76FB08,0xBF6BDB1C,0x3F07C9AA,0xBF2DA5D0,0x3F13254A,0x3EBA7342},
//                                           {0x3F800000,0x3F7FEFF6,0xBD87D449,0x3E0787C4,0xBF79C2A7,0xBF720844,0x3EE56901,0xBF14A25B,0x3F330185,0x3F0B44ED},
//                                           {0x3F800000,0x3F7FF444,0xBD686DA4,0x3DE80DD9,0xBF7B6DDE,0xBF75C103,0x3EC62B74,0xBF016559,0x3F46D906,0x3F28A405},
//                                           {0x3F800000,0x3F7FA428,0xBE21F93E,0x3E9FEF3F,0xBF5CF216,0xBF336A39,0x3F65841F,0xBF7F00FB,0xBEA87E4B,0xBF39BF67},
//                                           {0x3F800000,0x3F7F4F88,0xBE5FAC08,0x3EDA4560,0xBF3E13CE,0xBEE7C5F9,0x3F7FE3C1,0xBF628AD6,0xBF60C481,0xBF7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2},
//                                           {0xBF3504F3,0xBE8483EC,0x3F7746EA,0x3F3504F5,0x3E8483E7,0xBE8483E9,0x3F3504F7,0xBE8483D1,0x3E8483FD,0xBF3504F4},
//                                           {0x3F800000,0x3F63E6AB,0x3F47C35F,0xBF744279,0x3C8A5C40,0x3E910049,0xBF5FD52B,0x3F47C355,0xBF368AAC,0xBF423DFA},
//                                           {0x3F800000,0x3F61DB16,0x3F4FC6DF,0xBF7ADEC6,0x3E40C66A,0x3F04E850,0xBF2547DA,0x3ECD1E20,0xBF7CE488,0xBF7F6DA6},
//                                           {0x3F800000,0x3F610807,0x3F52C87A,0xBF7CBD9E,0x3E8251D8,0x3F1A7CD6,0xBF07C9A5,0x3E615418,0xBF7EFE18,0xBF6E6C0C},
//                                           {0x3F800000,0x3F607AD9,0x3F54B99C,0xBF7DBF73,0x3E9875D8,0x3F27E751,0xBEE568F8,0x3DC40A30,0xBF77FEAA,0xBF56CD6C},
//                                           {0x3F800000,0x3F6015C8,0x3F5614F7,0xBF7E59F2,0x3EA80385,0x3F30FA8C,0xBEC62B6A,0x3BCEAF40,0xBF6F0DEA,0xBF409AA1},
//                                           {0x3F800000,0x3F642A7F,0x3F46AA2C,0xBF733092,0xBBC0C500,0x3E802558,0xBF65841C,0x3F518F08,0xBF273AEC,0xBF302A06},
//                                           {0x3F800000,0x3F667E14,0x3F3C63D6,0xBF67925B,0xBE55E1B0,0xBD5C5F98,0xBF7FE3C1,0x3F7FCDCA,0x3CC86970,0x3E24A43D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F2,0x3F3504F4,0xBF3504F3,0x3F3504F5,0x3F3504F7,0xBF3504F3,0x3F3504EB,0x3F3504EF,0xBF3504F3},
//                                           {0x3F800000,0x3F7FABE3,0xBE1B0FDC,0x3E994620,0xBF5FD52F,0xBF398C09,0x3F5FD52E,0xBF7D0C41,0xBE80557C,0xBF26C059},
//                                           {0x3F800000,0x3F7FDB67,0xBDCCFEEC,0x3E4BF768,0xBF71D5D6,0xBF607FCD,0x3F2547DE,0xBF4E190B,0x3EB80457,0x3D88CA99},
//                                           {0x3F800000,0x3F7FE8C6,0xBDA366DA,0x3E22E18A,0xBF76FB08,0xBF6BDB1C,0x3F07C9AA,0xBF2DA5D0,0x3F13254A,0x3EBA7342},
//                                           {0x3F800000,0x3F7FEFF6,0xBD87D449,0x3E0787C4,0xBF79C2A7,0xBF720844,0x3EE56901,0xBF14A25B,0x3F330185,0x3F0B44ED},
//                                           {0x3F800000,0x3F7FF444,0xBD686DA4,0x3DE80DD9,0xBF7B6DDE,0xBF75C103,0x3EC62B74,0xBF016559,0x3F46D906,0x3F28A405},
//                                           {0x3F800000,0x3F7FA428,0xBE21F93E,0x3E9FEF3F,0xBF5CF216,0xBF336A39,0x3F65841F,0xBF7F00FB,0xBEA87E4B,0xBF39BF67},
//                                           {0x3F800000,0x3F7F4F88,0xBE5FAC08,0x3EDA4560,0xBF3E13CE,0xBEE7C5F9,0x3F7FE3C1,0xBF628AD6,0xBF60C481,0xBF7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0xBF3504F4,0xBF3504F4,0xBF3504DB,0x3F3504F2,0x3F350508},
//                                           {0x3F800000,0xBF7FABE3,0xBE1B0FE0,0xBE99461F,0xBF5FD52E,0x3F398C06,0x3F5FD52D,0x3F7D0C3E,0xBE805584,0x3F26C070},
//                                           {0x3F800000,0xBF7FDB67,0xBDCCFEF5,0xBE4BF767,0xBF71D5D5,0x3F607FCA,0x3F2547DD,0x3F4E18FE,0x3EB8044F,0xBD88C9A3},
//                                           {0x3F800000,0xBF7FE8C6,0xBDA366E3,0xBE22E189,0xBF76FB07,0x3F6BDB1A,0x3F07C9A9,0x3F2DA5BF,0x3F132546,0xBEBA7309},
//                                           {0x3F800000,0xBF7FEFF6,0xBD87D452,0xBE0787C3,0xBF79C2A6,0x3F720842,0x3EE56900,0x3F14A249,0x3F330182,0xBF0B44D3},
//                                           {0x3F800000,0xBF7FF444,0xBD686DB5,0xBDE80DD6,0xBF7B6DDD,0x3F75C101,0x3EC62B73,0x3F016546,0x3F46D903,0xBF28A3EE},
//                                           {0x3F800000,0xBF7FA428,0xBE21F942,0xBE9FEF3E,0xBF5CF215,0x3F336A36,0x3F65841E,0x3F7F00F9,0xBEA87E53,0x3F39BF7C},
//                                           {0x3F800000,0xBF7F4F88,0xBE5FAC0C,0xBEDA455F,0xBF3E13CD,0x3EE7C5F1,0x3F7FE3C1,0x3F628AE1,0xBF60C483,0x3F7CAB58}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0xBE8483EC,0xBE8483F1,0x3F3504F5,0x3E8483E9,0xBE8483E5,0x3F3504F0,0x3E8483D4,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0x3E8483EC,0x3E8483F1,0x3F3504F5,0xBF7746EC,0xBE8483E5,0xBF3504F0,0xBE8483D4,0xBF7746E8,0x3F3504F2},
//                                           {0x3F800000,0x3F0B1095,0x3F6E8757,0xBE994624,0x3F5B8252,0x3E6FE37A,0x3F5FD530,0xBEB9E78A,0x3F76B56B,0x3F26C058},
//                                           {0x3F800000,0x3F075633,0x3F6966BD,0xBE4BF772,0x3F41A441,0xBCB682E0,0x3F2547E2,0x3DE3AEA4,0x3F20E265,0xBD88CA9C},
//                                           {0x3F800000,0x3F05DB43,0x3F673556,0xBE22E194,0x3F35D222,0xBDFDCC34,0x3F07C9AE,0x3E982782,0x3ED7B1B1,0xBEBA7343},
//                                           {0x3F800000,0x3F04DF8B,0x3F65B426,0xBE0787CE,0x3F2D87C0,0xBE432440,0x3EE5690A,0x3ED4613C,0x3E89FA61,0xBF0B44ED},
//                                           {0x3F800000,0x3F042C31,0x3F649BD3,0xBDE80DEE,0x3F276C20,0xBE732111,0x3EC62B7E,0x3EFD3289,0x3E20D3CA,0xBF28A406},
//                                           {0x3F800000,0x3F0B8DCC,0x3F6F287C,0xBE9FEF43,0x3F5E73A4,0x3E88DFD1,0x3F658421,0xBED7ED04,0x3F7B7A12,0x3F39BF66},
//                                           {0x3F800000,0x3F0FEA01,0x3F744ED8,0xBEDA4564,0x3F738C3C,0x3F0BBE18,0x3F7FE3C1,0xBF5885ED,0x3F5A812D,0x3F7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0x3F800000,0xBD4F7581,0x3E1B0FE2,0xBF744278,0xBF5FD52E,0x3F306023,0xBF5FD52E,0x3E1B0FE2,0xBE805587,0xBF423DF9},
//                                           {0x3F800000,0xBD08DE25,0x3DCCFEF8,0xBF7ADEC5,0xBF71D5D5,0x3EF60ED0,0xBF2547DE,0x3F17DAA1,0x3EB8044C,0xBF7F6DA6},
//                                           {0x3F800000,0xBCDA1348,0x3DA366E6,0xBF7CBD9E,0xBF76FB07,0x3EC713F6,0xBF07C9AA,0x3F3C1A29,0x3F132545,0xBF6E6C0C},
//                                           {0x3F800000,0xBCB53961,0x3D87D455,0xBF7DBF73,0xBF79C2A6,0x3EA6CF55,0xBEE56902,0x3F506E8D,0x3F330181,0xBF56CD6C},
//                                           {0x3F800000,0xBC9B06C5,0x3D686DBB,0xBF7E59F2,0xBF7B6DDD,0x3E8F66D3,0xBEC62B75,0x3F5CE400,0x3F46D902,0xBF409AA2},
//                                           {0x3F800000,0xBD58C644,0x3E21F944,0xBF733091,0xBF5CF215,0x3F369C16,0xBF65841F,0x3DB47ECF,0xBEA87E56,0xBF302A05},
//                                           {0x3F800000,0xBD963115,0x3E5FAC0E,0xBF67925A,0xBF3E13CC,0x3F64449E,0xBF7FE3C1,0xBEEE7337,0xBF60C484,0x3E24A440}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F2,0x3F3504F4,0xBF3504F3,0x3F3504F5,0x3F3504F7,0xBF3504F3,0x3F3504EB,0x3F3504EF,0xBF3504F3},
//                                           {0x3F800000,0x3F7FABE3,0xBE1B0FDC,0x3E994620,0xBF5FD52F,0xBF398C09,0x3F5FD52E,0xBF7D0C41,0xBE80557C,0xBF26C059},
//                                           {0x3F800000,0x3F7FDB67,0xBDCCFEEC,0x3E4BF768,0xBF71D5D6,0xBF607FCD,0x3F2547DE,0xBF4E190B,0x3EB80457,0x3D88CA99},
//                                           {0x3F800000,0x3F7FE8C6,0xBDA366DA,0x3E22E18A,0xBF76FB08,0xBF6BDB1C,0x3F07C9AA,0xBF2DA5D0,0x3F13254A,0x3EBA7342},
//                                           {0x3F800000,0x3F7FEFF6,0xBD87D449,0x3E0787C4,0xBF79C2A7,0xBF720844,0x3EE56901,0xBF14A25B,0x3F330185,0x3F0B44ED},
//                                           {0x3F800000,0x3F7FF444,0xBD686DA4,0x3DE80DD9,0xBF7B6DDE,0xBF75C103,0x3EC62B74,0xBF016559,0x3F46D906,0x3F28A405},
//                                           {0x3F800000,0x3F7FA428,0xBE21F93E,0x3E9FEF3F,0xBF5CF216,0xBF336A39,0x3F65841F,0xBF7F00FB,0xBEA87E4B,0xBF39BF67},
//                                           {0x3F800000,0x3F7F4F88,0xBE5FAC08,0x3EDA4560,0xBF3E13CE,0xBEE7C5F9,0x3F7FE3C1,0xBF628AD6,0xBF60C481,0xBF7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0x3F3504F4,0xBF3504F5,0xBF3504F3,0x3F3504F7,0x3F3504EB,0x3F3504F4,0x3F350503,0x3F3504EB,0x3F3504F4},
//                                           {0x3F800000,0x3D4F756A,0x3E1B0FD6,0x3F744278,0xBF5FD531,0xBF30601B,0xBF5FD52E,0xBE1B103A,0xBE805570,0x3F423DFA},
//                                           {0x3F800000,0x3D08DE0E,0x3DCCFEE1,0x3F7ADEC5,0xBF71D5D7,0xBEF60EBC,0xBF2547DD,0xBF17DAB3,0x3EB80462,0x3F7F6DA6},
//                                           {0x3F800000,0x3CDA1319,0x3DA366CF,0x3F7CBD9E,0xBF76FB09,0xBEC713E1,0xBF07C9A9,0xBF3C1A38,0x3F13254F,0x3F6E6C0C},
//                                           {0x3F800000,0x3CB53932,0x3D87D43E,0x3F7DBF73,0xBF79C2A7,0xBEA6CF40,0xBEE56901,0xBF506E9A,0x3F330189,0x3F56CD6B},
//                                           {0x3F800000,0x3C9B0696,0x3D686D8C,0x3F7E59F2,0xBF7B6DDE,0xBE8F66BD,0xBEC62B74,0xBF5CE40B,0x3F46D909,0x3F409AA1},
//                                           {0x3F800000,0x3D58C62D,0x3E21F938,0x3F733091,0xBF5CF218,0xBF369C0E,0xBF65841F,0xBDB47F80,0xBEA87E40,0x3F302A06},
//                                           {0x3F800000,0x3D963109,0x3E5FAC03,0x3F67925A,0xBF3E13D0,0xBF644499,0xBF7FE3C1,0x3EEE7310,0xBF60C47E,0xBE24A43B}}};
//    uint32 pusch_dmrs_0_im[10][10][10] = {{{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F2,0x3F3504F1,0x3F3504F3,0xBF3504EF,0x3F3504FB,0xBF3504F2,0xBF3504E3,0x3F3504FB,0xBF3504F2},
//                                           {0x00000000,0x3F7FABE3,0x3F7D0C43,0xBE99461F,0x3EF87976,0xBF398C0D,0xBEF87981,0x3F7D0C40,0xBF77D3EA,0xBF26C058},
//                                           {0x00000000,0x3F7FDB67,0x3F7EB6DE,0xBE4BF767,0x3EA7F2D5,0xBF607FCF,0xBF437EB7,0x3F4E1905,0xBF6EE4E9,0x3D88CA9E},
//                                           {0x00000000,0x3F7FE8C6,0x3F7F2F12,0xBE22E189,0x3E86B556,0xBF6BDB1E,0xBF590520,0x3F2DA5C8,0xBF517C43,0x3EBA7343},
//                                           {0x00000000,0x3F7FEFF6,0x3F7F6FB4,0xBE0787C3,0x3E60B466,0xBF720846,0xBF64DD31,0x3F14A252,0xBF3702B2,0x3F0B44ED},
//                                           {0x00000000,0x3F7FF444,0x3F7F9667,0xBDE80DD8,0x3E40A3B7,0xBF75C104,0xBF6C0C08,0x3F016550,0xBF213B3A,0x3F28A406},
//                                           {0x00000000,0x3F7FA428,0x3F7CC6F3,0xBE9FEF3E,0x3F014D50,0xBF336A3D,0xBEE2CA1A,0x3F7F00FA,0xBF71BD98,0xBF39BF66},
//                                           {0x00000000,0x3F7F4F88,0x3F79D17C,0xBEDA455F,0x3F2B7BC6,0xBEE7C603,0xBCF07D10,0x3F628ADB,0xBEF5136D,0xBF7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0xBF7746EA,0x3E8483F1,0xBF3504F1,0x3F7746EA,0x3F7746EC,0xBF3504EF,0xBF7746EE,0xBF7746E8,0x3F3504F2},
//                                           {0x00000000,0x3EE9369F,0xBF201889,0x3E99461A,0xBF7FF6A6,0xBF7584EA,0xBEF8798A,0x3F201896,0x3F337BEC,0x3F26C058},
//                                           {0x00000000,0x3EF10A6C,0xBF158C71,0x3E4BF75E,0xBF7B6C34,0xBF5ACBBA,0xBF437EBA,0x3F6A8EFA,0x3E1F0FC4,0xBD88CA9A},
//                                           {0x00000000,0x3EF41B0A,0xBF1147DB,0x3E22E17F,0xBF77918D,0xBF4C219A,0xBF590523,0x3F79B9AA,0xBDB58370,0xBEBA7342},
//                                           {0x00000000,0x3EF620DA,0xBF0E6C10,0x3E0787B9,0xBF74630C,0xBF413F3A,0xBF64DD34,0x3F7ED310,0xBE7E12E0,0xBF0B44ED},
//                                           {0x00000000,0x3EF7902A,0xBF0C5FD2,0x3DE80DC4,0xBF71D2F1,0xBF38F8C4,0xBF6C0C0A,0x3F7FFEB3,0xBEB72EDC,0xBF28A406},
//                                           {0x00000000,0x3EE82CBC,0xBF2174F6,0x3E9FEF39,0xBF7FFEDD,0xBF77DA24,0xBEE2CA24,0x3F130A93,0x3F41D47C,0x3F39BF66},
//                                           {0x00000000,0x3EDECB12,0xBF2D55E6,0x3EDA455B,0xBF7A5A84,0xBF7FA114,0xBCF07DB2,0x3D204FA8,0x3F7FEC63,0x3F7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0xBF3504F2,0xBF3504F3,0xBF3504F1,0xBF3504EF,0x3F3504F3,0x3F3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0x00000000,0xBD4F7575,0xBF7D0C43,0x3F744278,0x3EF8797B,0x3F30601F,0x3EF87981,0xBE1B100E,0xBF77D3E8,0xBF423DF9},
//                                           {0x00000000,0xBD08DE19,0xBF7EB6DE,0x3F7ADEC5,0x3EA7F2DA,0x3EF60EC6,0x3F437EB6,0xBF17DAAA,0xBF6EE4EB,0xBF7F6DA6},
//                                           {0x00000000,0xBCDA1331,0xBF7F2F12,0x3F7CBD9E,0x3E86B55B,0x3EC713EC,0x3F590520,0xBF3C1A31,0xBF517C47,0xBF6E6C0C},
//                                           {0x00000000,0xBCB5394A,0xBF7F6FB4,0x3F7DBF73,0x3E60B472,0x3EA6CF4A,0x3F64DD31,0xBF506E93,0xBF3702B6,0xBF56CD6C},
//                                           {0x00000000,0xBC9B06AE,0xBF7F9667,0x3F7E59F2,0x3E40A3C2,0x3E8F66C8,0x3F6C0C08,0xBF5CE406,0xBF213B3E,0xBF409AA2},
//                                           {0x00000000,0xBD58C638,0xBF7CC6F3,0x3F733091,0x3F014D52,0x3F369C12,0x3EE2CA1A,0xBDB47F28,0xBF71BD96,0xBF302A05},
//                                           {0x00000000,0xBD96310F,0xBF79D17B,0x3F67925A,0x3F2B7BC8,0x3F64449B,0x3CF07D03,0x3EEE7323,0xBEF51362,0x3E24A43E}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0xBF7746EA,0x3E8483F1,0xBF3504F1,0x3F7746EA,0x3F7746EC,0xBF3504EF,0xBF7746EE,0xBF7746E8,0x3F3504F2},
//                                           {0x00000000,0x3EE9369F,0xBF201889,0x3E99461A,0xBF7FF6A6,0xBF7584EA,0xBEF8798A,0x3F201896,0x3F337BEC,0x3F26C058},
//                                           {0x00000000,0x3EF10A6C,0xBF158C71,0x3E4BF75E,0xBF7B6C34,0xBF5ACBBA,0xBF437EBA,0x3F6A8EFA,0x3E1F0FC4,0xBD88CA9A},
//                                           {0x00000000,0x3EF41B0A,0xBF1147DB,0x3E22E17F,0xBF77918D,0xBF4C219A,0xBF590523,0x3F79B9AA,0xBDB58370,0xBEBA7342},
//                                           {0x00000000,0x3EF620DA,0xBF0E6C10,0x3E0787B9,0xBF74630C,0xBF413F3A,0xBF64DD34,0x3F7ED310,0xBE7E12E0,0xBF0B44ED},
//                                           {0x00000000,0x3EF7902A,0xBF0C5FD2,0x3DE80DC4,0xBF71D2F1,0xBF38F8C4,0xBF6C0C0A,0x3F7FFEB3,0xBEB72EDC,0xBF28A406},
//                                           {0x00000000,0x3EE82CBC,0xBF2174F6,0x3E9FEF39,0xBF7FFEDD,0xBF77DA24,0xBEE2CA24,0x3F130A93,0x3F41D47C,0x3F39BF66},
//                                           {0x00000000,0x3EDECB12,0xBF2D55E6,0x3EDA455B,0xBF7A5A84,0xBF7FA114,0xBCF07DB2,0x3D204FA8,0x3F7FEC63,0x3F7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0xBF3504F2,0xBF3504F3,0xBF3504F1,0xBF3504EF,0x3F3504F3,0x3F3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0x00000000,0xBD4F7575,0xBF7D0C43,0x3F744278,0x3EF8797B,0x3F30601F,0x3EF87981,0xBE1B100E,0xBF77D3E8,0xBF423DF9},
//                                           {0x00000000,0xBD08DE19,0xBF7EB6DE,0x3F7ADEC5,0x3EA7F2DA,0x3EF60EC6,0x3F437EB6,0xBF17DAAA,0xBF6EE4EB,0xBF7F6DA6},
//                                           {0x00000000,0xBCDA1331,0xBF7F2F12,0x3F7CBD9E,0x3E86B55B,0x3EC713EC,0x3F590520,0xBF3C1A31,0xBF517C47,0xBF6E6C0C},
//                                           {0x00000000,0xBCB5394A,0xBF7F6FB4,0x3F7DBF73,0x3E60B472,0x3EA6CF4A,0x3F64DD31,0xBF506E93,0xBF3702B6,0xBF56CD6C},
//                                           {0x00000000,0xBC9B06AE,0xBF7F9667,0x3F7E59F2,0x3E40A3C2,0x3E8F66C8,0x3F6C0C08,0xBF5CE406,0xBF213B3E,0xBF409AA2},
//                                           {0x00000000,0xBD58C638,0xBF7CC6F3,0x3F733091,0x3F014D52,0x3F369C12,0x3EE2CA1A,0xBDB47F28,0xBF71BD96,0xBF302A05},
//                                           {0x00000000,0xBD96310F,0xBF79D17B,0x3F67925A,0x3F2B7BC8,0x3F64449B,0x3CF07D03,0x3EEE7323,0xBEF51362,0x3E24A43E}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F2,0x3F3504F2,0x3F3504F2,0xBF35050B,0x3F3504F4,0x3F3504DE},
//                                           {0x00000000,0x3D4F757E,0xBF7D0C43,0xBF744278,0x3EF8797F,0xBF306022,0x3EF87982,0x3E1B1066,0xBF77D3E7,0x3F423DE5},
//                                           {0x00000000,0x3D08DE22,0xBF7EB6DE,0xBF7ADEC5,0x3EA7F2DE,0xBEF60ECE,0x3F437EB7,0x3F17DABC,0xBF6EE4EC,0x3F7F6DA8},
//                                           {0x00000000,0x3CDA1342,0xBF7F2F12,0xBF7CBD9E,0x3E86B55F,0xBEC713F4,0x3F590521,0x3F3C1A40,0xBF517C49,0x3F6E6C17},
//                                           {0x00000000,0x3CB5395B,0xBF7F6FB4,0xBF7DBF73,0x3E60B47A,0xBEA6CF53,0x3F64DD32,0x3F506EA0,0xBF3702B9,0x3F56CD7C},
//                                           {0x00000000,0x3C9B06BF,0xBF7F9667,0xBF7E59F2,0x3E40A3CB,0xBE8F66D1,0x3F6C0C08,0x3F5CE411,0xBF213B42,0x3F409AB6},
//                                           {0x00000000,0x3D58C641,0xBF7CC6F3,0xBF733091,0x3F014D54,0xBF369C15,0x3EE2CA1B,0x3DB47FD9,0xBF71BD95,0x3F3029EF},
//                                           {0x00000000,0x3D963113,0xBF79D17B,0xBF67925A,0x3F2B7BC9,0xBF64449E,0x3CF07D1C,0xBEEE72FC,0xBEF5135B,0xBE24A4B7}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F7746EA,0xBF7746EA,0x3F3504F1,0xBF7746EC,0xBF7746EC,0xBF3504F6,0xBF7746EE,0x3E8483F9,0x3F3504F2},
//                                           {0xBF3504F3,0xBF7746EA,0x3F7746EA,0x3F3504F1,0xBE8483E9,0xBF7746EC,0x3F3504F6,0x3F7746EE,0x3E8483F9,0x3F3504F4},
//                                           {0x00000000,0x3F56EF53,0x3EB9E76E,0xBF744277,0x3F03B9E4,0x3F78E04C,0x3EF87978,0xBF6E8752,0x3E88AFDE,0x3F423DFA},
//                                           {0x00000000,0x3F594D34,0x3ED254D3,0xBF7ADEC5,0x3F2772C3,0x3F7FEFBC,0x3F437EB3,0xBF7E69C0,0x3F4720F0,0x3F7F6DA6},
//                                           {0x00000000,0x3F5A376D,0x3EDBCE67,0xBF7CBD9E,0x3F3436DC,0x3F7E06D3,0x3F59051E,0xBF746F42,0x3F682CAE,0x3F6E6C0C},
//                                           {0x00000000,0x3F5AD10D,0x3EE20743,0xBF7DBF73,0x3F3C35ED,0x3F7B4EFC,0x3F64DD2F,0xBF68EFE8,0x3F768768,0x3F56CD6B},
//                                           {0x00000000,0x3F5B3D92,0x3EE66D24,0xBF7E59F2,0x3F41A9FE,0x3F78ADF6,0x3F6C0C06,0xBF5E8174,0x3F7CD2A8,0x3F409AA1},
//                                           {0x00000000,0x3F569E1B,0x3EB6A3F3,0xBF733090,0x3EFD630C,0x3F76AEC6,0x3EE2CA11,0xBF681EE5,0x3E3FA434,0x3F302A06},
//                                           {0x00000000,0x3F53B7F2,0x3E98F723,0xBF679259,0x3E9DBD6E,0x3F567EAA,0x3CF07C61,0xBF089423,0xBF0562BC,0xBE24A43C}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3},
//                                           {0x00000000,0xBF7FABE3,0x3F7D0C43,0x3E994620,0x3EF87980,0x3F398C05,0xBEF87980,0xBF7D0C43,0xBF77D3E7,0x3F26C059},
//                                           {0x00000000,0xBF7FDB67,0x3F7EB6DE,0x3E4BF769,0x3EA7F2E0,0x3F607FCA,0xBF437EB6,0xBF4E1912,0xBF6EE4ED,0xBD88CA94},
//                                           {0x00000000,0xBF7FE8C6,0x3F7F2F12,0x3E22E18B,0x3E86B561,0x3F6BDB1A,0xBF590520,0xBF2DA5D8,0xBF517C4A,0xBEBA7341},
//                                           {0x00000000,0xBF7FEFF6,0x3F7F6FB4,0x3E0787C5,0x3E60B47D,0x3F720842,0xBF64DD31,0xBF14A264,0xBF3702BA,0xBF0B44EC},
//                                           {0x00000000,0xBF7FF444,0x3F7F9667,0x3DE80DDB,0x3E40A3CE,0x3F75C101,0xBF6C0C08,0xBF016563,0xBF213B43,0xBF28A405},
//                                           {0x00000000,0xBF7FA428,0x3F7CC6F3,0x3E9FEF3F,0x3F014D55,0x3F336A35,0xBEE2CA19,0xBF7F00FC,0xBF71BD94,0x3F39BF67},
//                                           {0x00000000,0xBF7F4F88,0x3F79D17B,0x3EDA4560,0x3F2B7BCA,0x3EE7C5EF,0xBCF07CF6,0xBF628AD1,0xBEF51358,0x3F7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0xBF3504F2,0xBF3504F3,0xBF3504F1,0xBF3504EF,0x3F3504F3,0x3F3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0x00000000,0xBD4F7575,0xBF7D0C43,0x3F744278,0x3EF8797B,0x3F30601F,0x3EF87981,0xBE1B100E,0xBF77D3E8,0xBF423DF9},
//                                           {0x00000000,0xBD08DE19,0xBF7EB6DE,0x3F7ADEC5,0x3EA7F2DA,0x3EF60EC6,0x3F437EB6,0xBF17DAAA,0xBF6EE4EB,0xBF7F6DA6},
//                                           {0x00000000,0xBCDA1331,0xBF7F2F12,0x3F7CBD9E,0x3E86B55B,0x3EC713EC,0x3F590520,0xBF3C1A31,0xBF517C47,0xBF6E6C0C},
//                                           {0x00000000,0xBCB5394A,0xBF7F6FB4,0x3F7DBF73,0x3E60B472,0x3EA6CF4A,0x3F64DD31,0xBF506E93,0xBF3702B6,0xBF56CD6C},
//                                           {0x00000000,0xBC9B06AE,0xBF7F9667,0x3F7E59F2,0x3E40A3C2,0x3E8F66C8,0x3F6C0C08,0xBF5CE406,0xBF213B3E,0xBF409AA2},
//                                           {0x00000000,0xBD58C638,0xBF7CC6F3,0x3F733091,0x3F014D52,0x3F369C12,0x3EE2CA1A,0xBDB47F28,0xBF71BD96,0xBF302A05},
//                                           {0x00000000,0xBD96310F,0xBF79D17B,0x3F67925A,0x3F2B7BC8,0x3F64449B,0x3CF07D03,0x3EEE7323,0xBEF51362,0x3E24A43E}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F2,0x3F3504F1,0x3F3504F3,0xBF3504EF,0x3F3504FB,0xBF3504F2,0xBF3504E3,0x3F3504FB,0xBF3504F2},
//                                           {0x00000000,0x3F7FABE3,0x3F7D0C43,0xBE99461F,0x3EF87976,0xBF398C0D,0xBEF87981,0x3F7D0C40,0xBF77D3EA,0xBF26C058},
//                                           {0x00000000,0x3F7FDB67,0x3F7EB6DE,0xBE4BF767,0x3EA7F2D5,0xBF607FCF,0xBF437EB7,0x3F4E1905,0xBF6EE4E9,0x3D88CA9E},
//                                           {0x00000000,0x3F7FE8C6,0x3F7F2F12,0xBE22E189,0x3E86B556,0xBF6BDB1E,0xBF590520,0x3F2DA5C8,0xBF517C43,0x3EBA7343},
//                                           {0x00000000,0x3F7FEFF6,0x3F7F6FB4,0xBE0787C3,0x3E60B466,0xBF720846,0xBF64DD31,0x3F14A252,0xBF3702B2,0x3F0B44ED},
//                                           {0x00000000,0x3F7FF444,0x3F7F9667,0xBDE80DD8,0x3E40A3B7,0xBF75C104,0xBF6C0C08,0x3F016550,0xBF213B3A,0x3F28A406},
//                                           {0x00000000,0x3F7FA428,0x3F7CC6F3,0xBE9FEF3E,0x3F014D50,0xBF336A3D,0xBEE2CA1A,0x3F7F00FA,0xBF71BD98,0xBF39BF66},
//                                           {0x00000000,0x3F7F4F88,0x3F79D17C,0xBEDA455F,0x3F2B7BC6,0xBEE7C603,0xBCF07D10,0x3F628ADB,0xBEF5136D,0xBF7CAB5D}}};
//    uint32 pusch_dmrs_1_re[10][10][10] = {{{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F7746EA,0x3E8483EC,0xBF3504F4,0x3E8483F1,0xBF7746EA,0xBF3504F5,0x3F7746E8,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0xBF7746EA,0xBE8483EC,0xBF3504F4,0xBF7746EA,0xBF7746EA,0x3F3504F5,0xBF7746E8,0xBF7746EA,0x3F3504F3},
//                                           {0x3F800000,0x3F56EF54,0xBF6E8756,0x3F744278,0x3F5B824E,0x3F78E04A,0xBF5FD52D,0x3F6E8759,0x3F76B568,0x3F423DF9},
//                                           {0x3F800000,0x3F594D35,0xBF6966BD,0x3F7ADEC5,0x3F41A43D,0x3F7FEFBB,0xBF2547DC,0x3F7E69BC,0x3F20E25D,0x3F7F6DA6},
//                                           {0x3F800000,0x3F5A376E,0xBF673555,0x3F7CBD9E,0x3F35D21E,0x3F7E06D4,0xBF07C9A8,0x3F746F3A,0x3ED7B1A0,0x3F6E6C0C},
//                                           {0x3F800000,0x3F5AD10E,0xBF65B425,0x3F7DBF73,0x3F2D87BC,0x3F7B4EFE,0xBEE568FD,0x3F68EFDE,0x3E89FA4F,0x3F56CD6C},
//                                           {0x3F800000,0x3F5B3D93,0xBF649BD2,0x3F7E59F2,0x3F276C1C,0x3F78ADF7,0xBEC62B70,0x3F5E816A,0x3E20D39E,0x3F409AA2},
//                                           {0x3F800000,0x3F569E1C,0xBF6F287C,0x3F733091,0x3F5E73A2,0x3F76AEC4,0xBF65841E,0x3F681EED,0x3F7B7A10,0x3F302A05},
//                                           {0x3F800000,0x3F53B7F3,0xBF744ED8,0x3F67925B,0x3F738C3B,0x3F567EA6,0xBF7FE3C1,0x3F089434,0x3F5A8132,0xBE24A43E}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F2,0x3F3504F4,0xBF3504F3,0x3F3504F5,0x3F3504F7,0xBF3504F3,0x3F3504EB,0x3F3504EF,0xBF3504F3},
//                                           {0x3F800000,0x3F7FABE3,0xBE1B0FDC,0x3E994620,0xBF5FD52F,0xBF398C09,0x3F5FD52E,0xBF7D0C41,0xBE80557C,0xBF26C059},
//                                           {0x3F800000,0x3F7FDB67,0xBDCCFEEC,0x3E4BF768,0xBF71D5D6,0xBF607FCD,0x3F2547DE,0xBF4E190B,0x3EB80457,0x3D88CA99},
//                                           {0x3F800000,0x3F7FE8C6,0xBDA366DA,0x3E22E18A,0xBF76FB08,0xBF6BDB1C,0x3F07C9AA,0xBF2DA5D0,0x3F13254A,0x3EBA7342},
//                                           {0x3F800000,0x3F7FEFF6,0xBD87D449,0x3E0787C4,0xBF79C2A7,0xBF720844,0x3EE56901,0xBF14A25B,0x3F330185,0x3F0B44ED},
//                                           {0x3F800000,0x3F7FF444,0xBD686DA4,0x3DE80DD9,0xBF7B6DDE,0xBF75C103,0x3EC62B74,0xBF016559,0x3F46D906,0x3F28A405},
//                                           {0x3F800000,0x3F7FA428,0xBE21F93E,0x3E9FEF3F,0xBF5CF216,0xBF336A39,0x3F65841F,0xBF7F00FB,0xBEA87E4B,0xBF39BF67},
//                                           {0x3F800000,0x3F7F4F88,0xBE5FAC08,0x3EDA4560,0xBF3E13CE,0xBEE7C5F9,0x3F7FE3C1,0xBF628AD6,0xBF60C481,0xBF7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F7746EA,0x3E8483EC,0xBF3504F4,0x3E8483F1,0xBF7746EA,0xBF3504F5,0x3F7746E8,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0xBF7746EA,0xBE8483EC,0xBF3504F4,0xBF7746EA,0xBF7746EA,0x3F3504F5,0xBF7746E8,0xBF7746EA,0x3F3504F3},
//                                           {0x3F800000,0x3F56EF54,0xBF6E8756,0x3F744278,0x3F5B824E,0x3F78E04A,0xBF5FD52D,0x3F6E8759,0x3F76B568,0x3F423DF9},
//                                           {0x3F800000,0x3F594D35,0xBF6966BD,0x3F7ADEC5,0x3F41A43D,0x3F7FEFBB,0xBF2547DC,0x3F7E69BC,0x3F20E25D,0x3F7F6DA6},
//                                           {0x3F800000,0x3F5A376E,0xBF673555,0x3F7CBD9E,0x3F35D21E,0x3F7E06D4,0xBF07C9A8,0x3F746F3A,0x3ED7B1A0,0x3F6E6C0C},
//                                           {0x3F800000,0x3F5AD10E,0xBF65B425,0x3F7DBF73,0x3F2D87BC,0x3F7B4EFE,0xBEE568FD,0x3F68EFDE,0x3E89FA4F,0x3F56CD6C},
//                                           {0x3F800000,0x3F5B3D93,0xBF649BD2,0x3F7E59F2,0x3F276C1C,0x3F78ADF7,0xBEC62B70,0x3F5E816A,0x3E20D39E,0x3F409AA2},
//                                           {0x3F800000,0x3F569E1C,0xBF6F287C,0x3F733091,0x3F5E73A2,0x3F76AEC4,0xBF65841E,0x3F681EED,0x3F7B7A10,0x3F302A05},
//                                           {0x3F800000,0x3F53B7F3,0xBF744ED8,0x3F67925B,0x3F738C3B,0x3F567EA6,0xBF7FE3C1,0x3F089434,0x3F5A8132,0xBE24A43E}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0x3F800000,0xBD4F7581,0x3E1B0FE2,0xBF744278,0xBF5FD52E,0x3F306023,0xBF5FD52E,0x3E1B0FE2,0xBE805587,0xBF423DF9},
//                                           {0x3F800000,0xBD08DE25,0x3DCCFEF8,0xBF7ADEC5,0xBF71D5D5,0x3EF60ED0,0xBF2547DE,0x3F17DAA1,0x3EB8044C,0xBF7F6DA6},
//                                           {0x3F800000,0xBCDA1348,0x3DA366E6,0xBF7CBD9E,0xBF76FB07,0x3EC713F6,0xBF07C9AA,0x3F3C1A29,0x3F132545,0xBF6E6C0C},
//                                           {0x3F800000,0xBCB53961,0x3D87D455,0xBF7DBF73,0xBF79C2A6,0x3EA6CF55,0xBEE56902,0x3F506E8D,0x3F330181,0xBF56CD6C},
//                                           {0x3F800000,0xBC9B06C5,0x3D686DBB,0xBF7E59F2,0xBF7B6DDD,0x3E8F66D3,0xBEC62B75,0x3F5CE400,0x3F46D902,0xBF409AA2},
//                                           {0x3F800000,0xBD58C644,0x3E21F944,0xBF733091,0xBF5CF215,0x3F369C16,0xBF65841F,0x3DB47ECF,0xBEA87E56,0xBF302A05},
//                                           {0x3F800000,0xBD963115,0x3E5FAC0E,0xBF67925A,0xBF3E13CC,0x3F64449E,0xBF7FE3C1,0xBEEE7337,0xBF60C484,0x3E24A440}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0xBF7746EA,0x3E8483E7,0x3F3504F7,0x3E8483FD,0x3F7746E8,0xBF3504FB,0xBF7746E2,0xBF7746EE,0xBF3504F2},
//                                           {0xBF3504F3,0x3F7746EA,0xBE8483E7,0x3F3504F7,0xBF7746E8,0x3F7746E8,0x3F3504FB,0x3F7746E2,0xBF7746EE,0xBF3504F4},
//                                           {0x3F800000,0xBF56EF54,0xBF6E8755,0xBF74427A,0x3F5B824C,0xBF78E048,0xBF5FD528,0xBF6E8761,0x3F76B565,0xBF423DFA},
//                                           {0x3F800000,0xBF594D35,0xBF6966BB,0xBF7ADEC6,0x3F41A439,0xBF7FEFBB,0xBF2547D5,0xBF7E69BA,0x3F20E254,0xBF7F6DA6},
//                                           {0x3F800000,0xBF5A376E,0xBF673554,0xBF7CBD9F,0x3F35D219,0xBF7E06D3,0xBF07C9A0,0xBF746F34,0x3ED7B189,0xBF6E6C0B},
//                                           {0x3F800000,0xBF5AD10F,0xBF65B424,0xBF7DBF74,0x3F2D87B8,0xBF7B4EFE,0xBEE568ED,0xBF68EFD4,0x3E89FA35,0xBF56CD6B},
//                                           {0x3F800000,0xBF5B3D93,0xBF649BD0,0xBF7E59F3,0x3F276C18,0xBF78ADF8,0xBEC62B5F,0xBF5E815E,0x3E20D370,0xBF409AA1},
//                                           {0x3F800000,0xBF569E1C,0xBF6F287A,0xBF733093,0x3F5E739E,0xBF76AEC3,0xBF65841A,0xBF681EF7,0x3F7B7A0E,0xBF302A06},
//                                           {0x3F800000,0xBF53B7F3,0xBF744ED7,0xBF67925D,0x3F738C39,0xBF567EA4,0xBF7FE3C1,0xBF089447,0x3F5A813A,0x3E24A43A}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0xBF7746EA,0x3E8483E7,0x3F3504F7,0x3E8483FD,0x3F7746E8,0xBF3504FB,0xBF7746E2,0xBF7746EE,0xBF3504F2},
//                                           {0xBF3504F3,0x3F7746EA,0xBE8483E7,0x3F3504F7,0xBF7746E8,0x3F7746E8,0x3F3504FB,0x3F7746E2,0xBF7746EE,0xBF3504F4},
//                                           {0x3F800000,0xBF56EF54,0xBF6E8755,0xBF74427A,0x3F5B824C,0xBF78E048,0xBF5FD528,0xBF6E8761,0x3F76B565,0xBF423DFA},
//                                           {0x3F800000,0xBF594D35,0xBF6966BB,0xBF7ADEC6,0x3F41A439,0xBF7FEFBB,0xBF2547D5,0xBF7E69BA,0x3F20E254,0xBF7F6DA6},
//                                           {0x3F800000,0xBF5A376E,0xBF673554,0xBF7CBD9F,0x3F35D219,0xBF7E06D3,0xBF07C9A0,0xBF746F34,0x3ED7B189,0xBF6E6C0B},
//                                           {0x3F800000,0xBF5AD10F,0xBF65B424,0xBF7DBF74,0x3F2D87B8,0xBF7B4EFE,0xBEE568ED,0xBF68EFD4,0x3E89FA35,0xBF56CD6B},
//                                           {0x3F800000,0xBF5B3D93,0xBF649BD0,0xBF7E59F3,0x3F276C18,0xBF78ADF8,0xBEC62B5F,0xBF5E815E,0x3E20D370,0xBF409AA1},
//                                           {0x3F800000,0xBF569E1C,0xBF6F287A,0xBF733093,0x3F5E739E,0xBF76AEC3,0xBF65841A,0xBF681EF7,0x3F7B7A0E,0xBF302A06},
//                                           {0x3F800000,0xBF53B7F3,0xBF744ED7,0xBF67925D,0x3F738C39,0xBF567EA4,0xBF7FE3C1,0xBF089447,0x3F5A813A,0x3E24A43A}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F7746EA,0x3E8483EC,0xBF3504F4,0x3E8483F1,0xBF7746EA,0xBF3504F5,0x3F7746E8,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0xBF7746EA,0xBE8483EC,0xBF3504F4,0xBF7746EA,0xBF7746EA,0x3F3504F5,0xBF7746E8,0xBF7746EA,0x3F3504F3},
//                                           {0x3F800000,0x3F56EF54,0xBF6E8756,0x3F744278,0x3F5B824E,0x3F78E04A,0xBF5FD52D,0x3F6E8759,0x3F76B568,0x3F423DF9},
//                                           {0x3F800000,0x3F594D35,0xBF6966BD,0x3F7ADEC5,0x3F41A43D,0x3F7FEFBB,0xBF2547DC,0x3F7E69BC,0x3F20E25D,0x3F7F6DA6},
//                                           {0x3F800000,0x3F5A376E,0xBF673555,0x3F7CBD9E,0x3F35D21E,0x3F7E06D4,0xBF07C9A8,0x3F746F3A,0x3ED7B1A0,0x3F6E6C0C},
//                                           {0x3F800000,0x3F5AD10E,0xBF65B425,0x3F7DBF73,0x3F2D87BC,0x3F7B4EFE,0xBEE568FD,0x3F68EFDE,0x3E89FA4F,0x3F56CD6C},
//                                           {0x3F800000,0x3F5B3D93,0xBF649BD2,0x3F7E59F2,0x3F276C1C,0x3F78ADF7,0xBEC62B70,0x3F5E816A,0x3E20D39E,0x3F409AA2},
//                                           {0x3F800000,0x3F569E1C,0xBF6F287C,0x3F733091,0x3F5E73A2,0x3F76AEC4,0xBF65841E,0x3F681EED,0x3F7B7A10,0x3F302A05},
//                                           {0x3F800000,0x3F53B7F3,0xBF744ED8,0x3F67925B,0x3F738C3B,0x3F567EA6,0xBF7FE3C1,0x3F089434,0x3F5A8132,0xBE24A43E}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F2,0x3F3504F4,0xBF3504F3,0x3F3504F5,0x3F3504F7,0xBF3504F3,0x3F3504EB,0x3F3504EF,0xBF3504F3},
//                                           {0x3F800000,0x3F7FABE3,0xBE1B0FDC,0x3E994620,0xBF5FD52F,0xBF398C09,0x3F5FD52E,0xBF7D0C41,0xBE80557C,0xBF26C059},
//                                           {0x3F800000,0x3F7FDB67,0xBDCCFEEC,0x3E4BF768,0xBF71D5D6,0xBF607FCD,0x3F2547DE,0xBF4E190B,0x3EB80457,0x3D88CA99},
//                                           {0x3F800000,0x3F7FE8C6,0xBDA366DA,0x3E22E18A,0xBF76FB08,0xBF6BDB1C,0x3F07C9AA,0xBF2DA5D0,0x3F13254A,0x3EBA7342},
//                                           {0x3F800000,0x3F7FEFF6,0xBD87D449,0x3E0787C4,0xBF79C2A7,0xBF720844,0x3EE56901,0xBF14A25B,0x3F330185,0x3F0B44ED},
//                                           {0x3F800000,0x3F7FF444,0xBD686DA4,0x3DE80DD9,0xBF7B6DDE,0xBF75C103,0x3EC62B74,0xBF016559,0x3F46D906,0x3F28A405},
//                                           {0x3F800000,0x3F7FA428,0xBE21F93E,0x3E9FEF3F,0xBF5CF216,0xBF336A39,0x3F65841F,0xBF7F00FB,0xBEA87E4B,0xBF39BF67},
//                                           {0x3F800000,0x3F7F4F88,0xBE5FAC08,0x3EDA4560,0xBF3E13CE,0xBEE7C5F9,0x3F7FE3C1,0xBF628AD6,0xBF60C481,0xBF7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0x3F800000,0xBD4F7581,0x3E1B0FE2,0xBF744278,0xBF5FD52E,0x3F306023,0xBF5FD52E,0x3E1B0FE2,0xBE805587,0xBF423DF9},
//                                           {0x3F800000,0xBD08DE25,0x3DCCFEF8,0xBF7ADEC5,0xBF71D5D5,0x3EF60ED0,0xBF2547DE,0x3F17DAA1,0x3EB8044C,0xBF7F6DA6},
//                                           {0x3F800000,0xBCDA1348,0x3DA366E6,0xBF7CBD9E,0xBF76FB07,0x3EC713F6,0xBF07C9AA,0x3F3C1A29,0x3F132545,0xBF6E6C0C},
//                                           {0x3F800000,0xBCB53961,0x3D87D455,0xBF7DBF73,0xBF79C2A6,0x3EA6CF55,0xBEE56902,0x3F506E8D,0x3F330181,0xBF56CD6C},
//                                           {0x3F800000,0xBC9B06C5,0x3D686DBB,0xBF7E59F2,0xBF7B6DDD,0x3E8F66D3,0xBEC62B75,0x3F5CE400,0x3F46D902,0xBF409AA2},
//                                           {0x3F800000,0xBD58C644,0x3E21F944,0xBF733091,0xBF5CF215,0x3F369C16,0xBF65841F,0x3DB47ECF,0xBEA87E56,0xBF302A05},
//                                           {0x3F800000,0xBD963115,0x3E5FAC0E,0xBF67925A,0xBF3E13CC,0x3F64449E,0xBF7FE3C1,0xBEEE7337,0xBF60C484,0x3E24A440}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0x3F3504F4,0xBF3504F5,0xBF3504F3,0x3F3504F7,0x3F3504EB,0x3F3504F4,0x3F350503,0x3F3504EB,0x3F3504F4},
//                                           {0x3F800000,0x3D4F756A,0x3E1B0FD6,0x3F744278,0xBF5FD531,0xBF30601B,0xBF5FD52E,0xBE1B103A,0xBE805570,0x3F423DFA},
//                                           {0x3F800000,0x3D08DE0E,0x3DCCFEE1,0x3F7ADEC5,0xBF71D5D7,0xBEF60EBC,0xBF2547DD,0xBF17DAB3,0x3EB80462,0x3F7F6DA6},
//                                           {0x3F800000,0x3CDA1319,0x3DA366CF,0x3F7CBD9E,0xBF76FB09,0xBEC713E1,0xBF07C9A9,0xBF3C1A38,0x3F13254F,0x3F6E6C0C},
//                                           {0x3F800000,0x3CB53932,0x3D87D43E,0x3F7DBF73,0xBF79C2A7,0xBEA6CF40,0xBEE56901,0xBF506E9A,0x3F330189,0x3F56CD6B},
//                                           {0x3F800000,0x3C9B0696,0x3D686D8C,0x3F7E59F2,0xBF7B6DDE,0xBE8F66BD,0xBEC62B74,0xBF5CE40B,0x3F46D909,0x3F409AA1},
//                                           {0x3F800000,0x3D58C62D,0x3E21F938,0x3F733091,0xBF5CF218,0xBF369C0E,0xBF65841F,0xBDB47F80,0xBEA87E40,0x3F302A06},
//                                           {0x3F800000,0x3D963109,0x3E5FAC03,0x3F67925A,0xBF3E13D0,0xBF644499,0xBF7FE3C1,0x3EEE7310,0xBF60C47E,0xBE24A43B}}};
//    uint32 pusch_dmrs_1_im[10][10][10] = {{{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3E8483F0,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3E8483F1,0x3F3504F1,0x3E8483FC,0x3E8483E7,0x3F3504F3},
//                                           {0xBF3504F3,0xBE8483F0,0xBF7746EA,0x3F3504F2,0xBE8483F1,0x3E8483F1,0xBF3504F1,0xBE8483FC,0x3E8483E7,0xBF3504F3},
//                                           {0x00000000,0xBF0B1094,0xBEB9E773,0xBE99461D,0x3F03B9E9,0xBE6FE392,0xBEF87985,0xBEB9E762,0x3E88AFF1,0xBF26C059},
//                                           {0x00000000,0xBF075632,0xBED254D8,0xBE4BF763,0x3F2772C6,0x3CB68210,0xBF437EB8,0x3DE3AF48,0x3F4720F6,0x3D88CA97},
//                                           {0x00000000,0xBF05DB41,0xBEDBCE6C,0xBE22E185,0x3F3436DF,0x3DFDCC04,0xBF590522,0x3E9827AB,0x3F682CB2,0x3EBA7342},
//                                           {0x00000000,0xBF04DF89,0xBEE20748,0xBE0787BF,0x3F3C35F0,0x3E432426,0xBF64DD32,0x3ED46162,0x3F76876A,0x3F0B44EC},
//                                           {0x00000000,0xBF042C30,0xBEE66D29,0xBDE80DCF,0x3F41AA00,0x3E7320F8,0xBF6C0C09,0x3EFD32AC,0x3F7CD2AA,0x3F28A405},
//                                           {0x00000000,0xBF0B8DCB,0xBEB6A3F8,0xBE9FEF3C,0x3EFD6315,0xBE88DFDD,0xBEE2CA1E,0xBED7ECDD,0x3E3FA45A,0xBF39BF67},
//                                           {0x00000000,0xBF0FEA00,0xBE98F728,0xBEDA455D,0x3E9DBD76,0xBF0BBE1E,0xBCF07D54,0xBF5885E1,0xBF0562B2,0xBF7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0xBF3504F2,0xBF3504F3,0xBF3504F1,0xBF3504EF,0x3F3504F3,0x3F3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0x00000000,0xBD4F7575,0xBF7D0C43,0x3F744278,0x3EF8797B,0x3F30601F,0x3EF87981,0xBE1B100E,0xBF77D3E8,0xBF423DF9},
//                                           {0x00000000,0xBD08DE19,0xBF7EB6DE,0x3F7ADEC5,0x3EA7F2DA,0x3EF60EC6,0x3F437EB6,0xBF17DAAA,0xBF6EE4EB,0xBF7F6DA6},
//                                           {0x00000000,0xBCDA1331,0xBF7F2F12,0x3F7CBD9E,0x3E86B55B,0x3EC713EC,0x3F590520,0xBF3C1A31,0xBF517C47,0xBF6E6C0C},
//                                           {0x00000000,0xBCB5394A,0xBF7F6FB4,0x3F7DBF73,0x3E60B472,0x3EA6CF4A,0x3F64DD31,0xBF506E93,0xBF3702B6,0xBF56CD6C},
//                                           {0x00000000,0xBC9B06AE,0xBF7F9667,0x3F7E59F2,0x3E40A3C2,0x3E8F66C8,0x3F6C0C08,0xBF5CE406,0xBF213B3E,0xBF409AA2},
//                                           {0x00000000,0xBD58C638,0xBF7CC6F3,0x3F733091,0x3F014D52,0x3F369C12,0x3EE2CA1A,0xBDB47F28,0xBF71BD96,0xBF302A05},
//                                           {0x00000000,0xBD96310F,0xBF79D17B,0x3F67925A,0x3F2B7BC8,0x3F64449B,0x3CF07D03,0x3EEE7323,0xBEF51362,0x3E24A43E}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3E8483F0,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3E8483F1,0x3F3504F1,0x3E8483FC,0x3E8483E7,0x3F3504F3},
//                                           {0xBF3504F3,0xBE8483F0,0xBF7746EA,0x3F3504F2,0xBE8483F1,0x3E8483F1,0xBF3504F1,0xBE8483FC,0x3E8483E7,0xBF3504F3},
//                                           {0x00000000,0xBF0B1094,0xBEB9E773,0xBE99461D,0x3F03B9E9,0xBE6FE392,0xBEF87985,0xBEB9E762,0x3E88AFF1,0xBF26C059},
//                                           {0x00000000,0xBF075632,0xBED254D8,0xBE4BF763,0x3F2772C6,0x3CB68210,0xBF437EB8,0x3DE3AF48,0x3F4720F6,0x3D88CA97},
//                                           {0x00000000,0xBF05DB41,0xBEDBCE6C,0xBE22E185,0x3F3436DF,0x3DFDCC04,0xBF590522,0x3E9827AB,0x3F682CB2,0x3EBA7342},
//                                           {0x00000000,0xBF04DF89,0xBEE20748,0xBE0787BF,0x3F3C35F0,0x3E432426,0xBF64DD32,0x3ED46162,0x3F76876A,0x3F0B44EC},
//                                           {0x00000000,0xBF042C30,0xBEE66D29,0xBDE80DCF,0x3F41AA00,0x3E7320F8,0xBF6C0C09,0x3EFD32AC,0x3F7CD2AA,0x3F28A405},
//                                           {0x00000000,0xBF0B8DCB,0xBEB6A3F8,0xBE9FEF3C,0x3EFD6315,0xBE88DFDD,0xBEE2CA1E,0xBED7ECDD,0x3E3FA45A,0xBF39BF67},
//                                           {0x00000000,0xBF0FEA00,0xBE98F728,0xBEDA455D,0x3E9DBD76,0xBF0BBE1E,0xBCF07D54,0xBF5885E1,0xBF0562B2,0xBF7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3},
//                                           {0x00000000,0xBF7FABE3,0x3F7D0C43,0x3E994620,0x3EF87980,0x3F398C05,0xBEF87980,0xBF7D0C43,0xBF77D3E7,0x3F26C059},
//                                           {0x00000000,0xBF7FDB67,0x3F7EB6DE,0x3E4BF769,0x3EA7F2E0,0x3F607FCA,0xBF437EB6,0xBF4E1912,0xBF6EE4ED,0xBD88CA94},
//                                           {0x00000000,0xBF7FE8C6,0x3F7F2F12,0x3E22E18B,0x3E86B561,0x3F6BDB1A,0xBF590520,0xBF2DA5D8,0xBF517C4A,0xBEBA7341},
//                                           {0x00000000,0xBF7FEFF6,0x3F7F6FB4,0x3E0787C5,0x3E60B47D,0x3F720842,0xBF64DD31,0xBF14A264,0xBF3702BA,0xBF0B44EC},
//                                           {0x00000000,0xBF7FF444,0x3F7F9667,0x3DE80DDB,0x3E40A3CE,0x3F75C101,0xBF6C0C08,0xBF016563,0xBF213B43,0xBF28A405},
//                                           {0x00000000,0xBF7FA428,0x3F7CC6F3,0x3E9FEF3F,0x3F014D55,0x3F336A35,0xBEE2CA19,0xBF7F00FC,0xBF71BD94,0x3F39BF67},
//                                           {0x00000000,0xBF7F4F88,0x3F79D17B,0x3EDA4560,0x3F2B7BCA,0x3EE7C5EF,0xBCF07CF6,0xBF628AD1,0xBEF51358,0x3F7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0xBE8483F1,0x3F7746EA,0xBF3504EF,0xBF7746E8,0xBE8483F9,0x3F3504EB,0xBE848427,0x3E8483CF,0xBF3504F4},
//                                           {0xBF3504F3,0x3E8483F1,0xBF7746EA,0xBF3504EF,0xBE8483FD,0xBE8483F9,0xBF3504EB,0x3E848427,0x3E8483CF,0x3F3504F2},
//                                           {0x00000000,0x3F0B1093,0xBEB9E778,0x3E994615,0x3F03B9EE,0x3E6FE3A6,0xBEF87995,0x3EB9E73A,0x3E88B009,0x3F26C058},
//                                           {0x00000000,0x3F075631,0xBED254DD,0x3E4BF752,0x3F2772CA,0xBCB68190,0xBF437EBE,0xBDE3AFF4,0x3F4720FE,0xBD88CAA1},
//                                           {0x00000000,0x3F05DB40,0xBEDBCE71,0x3E22E174,0x3F3436E4,0xBDFDCBE0,0xBF590526,0xBE9827D5,0x3F682CB7,0xBEBA7344},
//                                           {0x00000000,0x3F04DF88,0xBEE2074C,0x3E0787AE,0x3F3C35F4,0xBE432416,0xBF64DD36,0xBED4618A,0x3F76876E,0xBF0B44ED},
//                                           {0x00000000,0x3F042C2F,0xBEE66D2D,0x3DE80DAC,0x3F41AA05,0xBE7320E6,0xBF6C0C0D,0xBEFD32D3,0x3F7CD2AC,0xBF28A406},
//                                           {0x00000000,0x3F0B8DCA,0xBEB6A3FD,0x3E9FEF34,0x3EFD631E,0x3E88DFE7,0xBEE2CA2E,0x3ED7ECB5,0x3E3FA48A,0x3F39BF66},
//                                           {0x00000000,0x3F0FE9FF,0xBE98F72E,0x3EDA4555,0x3E9DBD83,0x3F0BBE22,0xBCF07E6D,0x3F5885D6,0xBF0562A8,0x3F7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0xBE8483F1,0x3F7746EA,0xBF3504EF,0xBF7746E8,0xBE8483F9,0x3F3504EB,0xBE848427,0x3E8483CF,0xBF3504F4},
//                                           {0xBF3504F3,0x3E8483F1,0xBF7746EA,0xBF3504EF,0xBE8483FD,0xBE8483F9,0xBF3504EB,0x3E848427,0x3E8483CF,0x3F3504F2},
//                                           {0x00000000,0x3F0B1093,0xBEB9E778,0x3E994615,0x3F03B9EE,0x3E6FE3A6,0xBEF87995,0x3EB9E73A,0x3E88B009,0x3F26C058},
//                                           {0x00000000,0x3F075631,0xBED254DD,0x3E4BF752,0x3F2772CA,0xBCB68190,0xBF437EBE,0xBDE3AFF4,0x3F4720FE,0xBD88CAA1},
//                                           {0x00000000,0x3F05DB40,0xBEDBCE71,0x3E22E174,0x3F3436E4,0xBDFDCBE0,0xBF590526,0xBE9827D5,0x3F682CB7,0xBEBA7344},
//                                           {0x00000000,0x3F04DF88,0xBEE2074C,0x3E0787AE,0x3F3C35F4,0xBE432416,0xBF64DD36,0xBED4618A,0x3F76876E,0xBF0B44ED},
//                                           {0x00000000,0x3F042C2F,0xBEE66D2D,0x3DE80DAC,0x3F41AA05,0xBE7320E6,0xBF6C0C0D,0xBEFD32D3,0x3F7CD2AC,0xBF28A406},
//                                           {0x00000000,0x3F0B8DCA,0xBEB6A3FD,0x3E9FEF34,0x3EFD631E,0x3E88DFE7,0xBEE2CA2E,0x3ED7ECB5,0x3E3FA48A,0x3F39BF66},
//                                           {0x00000000,0x3F0FE9FF,0xBE98F72E,0x3EDA4555,0x3E9DBD83,0x3F0BBE22,0xBCF07E6D,0x3F5885D6,0xBF0562A8,0x3F7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3E8483F0,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3E8483F1,0x3F3504F1,0x3E8483FC,0x3E8483E7,0x3F3504F3},
//                                           {0xBF3504F3,0xBE8483F0,0xBF7746EA,0x3F3504F2,0xBE8483F1,0x3E8483F1,0xBF3504F1,0xBE8483FC,0x3E8483E7,0xBF3504F3},
//                                           {0x00000000,0xBF0B1094,0xBEB9E773,0xBE99461D,0x3F03B9E9,0xBE6FE392,0xBEF87985,0xBEB9E762,0x3E88AFF1,0xBF26C059},
//                                           {0x00000000,0xBF075632,0xBED254D8,0xBE4BF763,0x3F2772C6,0x3CB68210,0xBF437EB8,0x3DE3AF48,0x3F4720F6,0x3D88CA97},
//                                           {0x00000000,0xBF05DB41,0xBEDBCE6C,0xBE22E185,0x3F3436DF,0x3DFDCC04,0xBF590522,0x3E9827AB,0x3F682CB2,0x3EBA7342},
//                                           {0x00000000,0xBF04DF89,0xBEE20748,0xBE0787BF,0x3F3C35F0,0x3E432426,0xBF64DD32,0x3ED46162,0x3F76876A,0x3F0B44EC},
//                                           {0x00000000,0xBF042C30,0xBEE66D29,0xBDE80DCF,0x3F41AA00,0x3E7320F8,0xBF6C0C09,0x3EFD32AC,0x3F7CD2AA,0x3F28A405},
//                                           {0x00000000,0xBF0B8DCB,0xBEB6A3F8,0xBE9FEF3C,0x3EFD6315,0xBE88DFDD,0xBEE2CA1E,0xBED7ECDD,0x3E3FA45A,0xBF39BF67},
//                                           {0x00000000,0xBF0FEA00,0xBE98F728,0xBEDA455D,0x3E9DBD76,0xBF0BBE1E,0xBCF07D54,0xBF5885E1,0xBF0562B2,0xBF7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0xBF3504F2,0xBF3504F3,0xBF3504F1,0xBF3504EF,0x3F3504F3,0x3F3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0x00000000,0xBD4F7575,0xBF7D0C43,0x3F744278,0x3EF8797B,0x3F30601F,0x3EF87981,0xBE1B100E,0xBF77D3E8,0xBF423DF9},
//                                           {0x00000000,0xBD08DE19,0xBF7EB6DE,0x3F7ADEC5,0x3EA7F2DA,0x3EF60EC6,0x3F437EB6,0xBF17DAAA,0xBF6EE4EB,0xBF7F6DA6},
//                                           {0x00000000,0xBCDA1331,0xBF7F2F12,0x3F7CBD9E,0x3E86B55B,0x3EC713EC,0x3F590520,0xBF3C1A31,0xBF517C47,0xBF6E6C0C},
//                                           {0x00000000,0xBCB5394A,0xBF7F6FB4,0x3F7DBF73,0x3E60B472,0x3EA6CF4A,0x3F64DD31,0xBF506E93,0xBF3702B6,0xBF56CD6C},
//                                           {0x00000000,0xBC9B06AE,0xBF7F9667,0x3F7E59F2,0x3E40A3C2,0x3E8F66C8,0x3F6C0C08,0xBF5CE406,0xBF213B3E,0xBF409AA2},
//                                           {0x00000000,0xBD58C638,0xBF7CC6F3,0x3F733091,0x3F014D52,0x3F369C12,0x3EE2CA1A,0xBDB47F28,0xBF71BD96,0xBF302A05},
//                                           {0x00000000,0xBD96310F,0xBF79D17B,0x3F67925A,0x3F2B7BC8,0x3F64449B,0x3CF07D03,0x3EEE7323,0xBEF51362,0x3E24A43E}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3},
//                                           {0x00000000,0xBF7FABE3,0x3F7D0C43,0x3E994620,0x3EF87980,0x3F398C05,0xBEF87980,0xBF7D0C43,0xBF77D3E7,0x3F26C059},
//                                           {0x00000000,0xBF7FDB67,0x3F7EB6DE,0x3E4BF769,0x3EA7F2E0,0x3F607FCA,0xBF437EB6,0xBF4E1912,0xBF6EE4ED,0xBD88CA94},
//                                           {0x00000000,0xBF7FE8C6,0x3F7F2F12,0x3E22E18B,0x3E86B561,0x3F6BDB1A,0xBF590520,0xBF2DA5D8,0xBF517C4A,0xBEBA7341},
//                                           {0x00000000,0xBF7FEFF6,0x3F7F6FB4,0x3E0787C5,0x3E60B47D,0x3F720842,0xBF64DD31,0xBF14A264,0xBF3702BA,0xBF0B44EC},
//                                           {0x00000000,0xBF7FF444,0x3F7F9667,0x3DE80DDB,0x3E40A3CE,0x3F75C101,0xBF6C0C08,0xBF016563,0xBF213B43,0xBF28A405},
//                                           {0x00000000,0xBF7FA428,0x3F7CC6F3,0x3E9FEF3F,0x3F014D55,0x3F336A35,0xBEE2CA19,0xBF7F00FC,0xBF71BD94,0x3F39BF67},
//                                           {0x00000000,0xBF7F4F88,0x3F79D17B,0x3EDA4560,0x3F2B7BCA,0x3EE7C5EF,0xBCF07CF6,0xBF628AD1,0xBEF51358,0x3F7CAB5D}},
//                                          {{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F2,0x3F3504F1,0x3F3504F3,0xBF3504EF,0x3F3504FB,0xBF3504F2,0xBF3504E3,0x3F3504FB,0xBF3504F2},
//                                           {0x00000000,0x3F7FABE3,0x3F7D0C43,0xBE99461F,0x3EF87976,0xBF398C0D,0xBEF87981,0x3F7D0C40,0xBF77D3EA,0xBF26C058},
//                                           {0x00000000,0x3F7FDB67,0x3F7EB6DE,0xBE4BF767,0x3EA7F2D5,0xBF607FCF,0xBF437EB7,0x3F4E1905,0xBF6EE4E9,0x3D88CA9E},
//                                           {0x00000000,0x3F7FE8C6,0x3F7F2F12,0xBE22E189,0x3E86B556,0xBF6BDB1E,0xBF590520,0x3F2DA5C8,0xBF517C43,0x3EBA7343},
//                                           {0x00000000,0x3F7FEFF6,0x3F7F6FB4,0xBE0787C3,0x3E60B466,0xBF720846,0xBF64DD31,0x3F14A252,0xBF3702B2,0x3F0B44ED},
//                                           {0x00000000,0x3F7FF444,0x3F7F9667,0xBDE80DD8,0x3E40A3B7,0xBF75C104,0xBF6C0C08,0x3F016550,0xBF213B3A,0x3F28A406},
//                                           {0x00000000,0x3F7FA428,0x3F7CC6F3,0xBE9FEF3E,0x3F014D50,0xBF336A3D,0xBEE2CA1A,0x3F7F00FA,0xBF71BD98,0xBF39BF66},
//                                           {0x00000000,0x3F7F4F88,0x3F79D17C,0xBEDA455F,0x3F2B7BC6,0xBEE7C603,0xBCF07D10,0x3F628ADB,0xBEF5136D,0xBF7CAB5D}}};
//    for(uint32 i=0; i<10; i++)
//        for(uint32 j=0; j<10; j++)
//        {
//            uint32 *dmrs_0_re_ptr = (uint32 *)(&(*phy_struct)->pusch_dmrs_0_re[i][j][0]);
//            uint32 *dmrs_0_im_ptr = (uint32 *)(&(*phy_struct)->pusch_dmrs_0_im[i][j][0]);
//            uint32 *dmrs_1_re_ptr = (uint32 *)(&(*phy_struct)->pusch_dmrs_1_re[i][j][0]);
//            uint32 *dmrs_1_im_ptr = (uint32 *)(&(*phy_struct)->pusch_dmrs_1_im[i][j][0]);
//            for(uint32 k=0; k<10; k++)
//                if(dmrs_0_re_ptr[k] != pusch_dmrs_0_re[i][j][k] ||
//                   dmrs_0_im_ptr[k] != pusch_dmrs_0_im[i][j][k] ||
//                   dmrs_1_re_ptr[k] != pusch_dmrs_1_re[i][j][k] ||
//                   dmrs_1_im_ptr[k] != pusch_dmrs_1_im[i][j][k])
//                    return -1;
//        }
//    uint32 pucch_dmrs_0_re[10][10][10] = {{{0xBF3504F3,0xBE8483F1,0xBF7746EC,0xBF3504F0,0xBF7746E8,0x3E8483FD,0xBF3504EC,0xBE848422,0x3E8483D5,0x3F3504F2},
//                                           {0xBF3504F3,0x3E8483E9,0xBE8483FB,0xBF3504FA,0x3E8483D5,0x3E848410,0x3F3504E5,0xBE8483C1,0xBF7746E3,0x3F3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3F7746EA,0x3F3504F4,0xBF7746EA,0x3E8483F1,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0x3E8483EC,0xBF3504F4,0x3E8483F1,0xBF7746EA,0xBF3504F5,0x3F7746E8,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2},
//                                           {0xBF3504F3,0xBE8483EC,0xBE8483F1,0x3F3504F5,0x3E8483E9,0xBE8483E5,0x3F3504F0,0x3E8483D4,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF7746E9,0x3F7746EA,0xBF3504F6,0xBF7746EA,0xBF7746EE,0x3F3504EC,0x3F7746E8,0x3E8483EA,0x3F3504DD}},
//                                          {{0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3F7746EA,0x3F3504F4,0xBF7746EA,0x3E8483F1,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0x3E8483EC,0xBF3504F4,0x3E8483F1,0xBF7746EA,0xBF3504F5,0x3F7746E8,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2},
//                                           {0xBF3504F3,0xBE8483EC,0xBE8483F1,0x3F3504F5,0x3E8483E9,0xBE8483E5,0x3F3504F0,0x3E8483D4,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF7746E9,0x3F7746EA,0xBF3504F6,0xBF7746EA,0xBF7746EE,0x3F3504EC,0x3F7746E8,0x3E8483EA,0x3F3504DD},
//                                           {0xBF3504F3,0xBF7746EA,0x3E8483E7,0x3F3504F7,0x3E8483FD,0x3F7746E8,0xBF3504FB,0xBF7746E2,0xBF7746EE,0xBF3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE}},
//                                          {{0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2},
//                                           {0xBF3504F3,0xBE8483EC,0xBE8483F1,0x3F3504F5,0x3E8483E9,0xBE8483E5,0x3F3504F0,0x3E8483D4,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF7746E9,0x3F7746EA,0xBF3504F6,0xBF7746EA,0xBF7746EE,0x3F3504EC,0x3F7746E8,0x3E8483EA,0x3F3504DD},
//                                           {0xBF3504F3,0xBF7746EA,0x3E8483E7,0x3F3504F7,0x3E8483FD,0x3F7746E8,0xBF3504FB,0xBF7746E2,0xBF7746EE,0xBF3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0xBE8483F1,0xBF7746EC,0xBF3504F0,0xBF7746E8,0x3E8483FD,0xBF3504EC,0xBE848422,0x3E8483D5,0x3F3504F2},
//                                           {0xBF3504F3,0x3E8483E9,0xBE8483FB,0xBF3504FA,0x3E8483D5,0x3E848410,0x3F3504E5,0xBE8483C1,0xBF7746E3,0x3F3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3F7746EA,0x3F3504F4,0xBF7746EA,0x3E8483F1,0xBF3504F3}},
//                                          {{0xBF3504F3,0xBF7746E9,0x3F7746EA,0xBF3504F6,0xBF7746EA,0xBF7746EE,0x3F3504EC,0x3F7746E8,0x3E8483EA,0x3F3504DD},
//                                           {0xBF3504F3,0xBF7746EA,0x3E8483E7,0x3F3504F7,0x3E8483FD,0x3F7746E8,0xBF3504FB,0xBF7746E2,0xBF7746EE,0xBF3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0xBE8483F1,0xBF7746EC,0xBF3504F0,0xBF7746E8,0x3E8483FD,0xBF3504EC,0xBE848422,0x3E8483D5,0x3F3504F2},
//                                           {0xBF3504F3,0x3E8483E9,0xBE8483FB,0xBF3504FA,0x3E8483D5,0x3E848410,0x3F3504E5,0xBE8483C1,0xBF7746E3,0x3F3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3F7746EA,0x3F3504F4,0xBF7746EA,0x3E8483F1,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0x3E8483EC,0xBF3504F4,0x3E8483F1,0xBF7746EA,0xBF3504F5,0x3F7746E8,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2}},
//                                          {{0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2},
//                                           {0xBF3504F3,0xBE8483EC,0xBE8483F1,0x3F3504F5,0x3E8483E9,0xBE8483E5,0x3F3504F0,0x3E8483D4,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF7746E9,0x3F7746EA,0xBF3504F6,0xBF7746EA,0xBF7746EE,0x3F3504EC,0x3F7746E8,0x3E8483EA,0x3F3504DD},
//                                           {0xBF3504F3,0xBF7746EA,0x3E8483E7,0x3F3504F7,0x3E8483FD,0x3F7746E8,0xBF3504FB,0xBF7746E2,0xBF7746EE,0xBF3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0xBE8483F1,0xBF7746EC,0xBF3504F0,0xBF7746E8,0x3E8483FD,0xBF3504EC,0xBE848422,0x3E8483D5,0x3F3504F2},
//                                           {0xBF3504F3,0x3E8483E9,0xBE8483FB,0xBF3504FA,0x3E8483D5,0x3E848410,0x3F3504E5,0xBE8483C1,0xBF7746E3,0x3F3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3F7746EA,0x3F3504F4,0xBF7746EA,0x3E8483F1,0xBF3504F3}},
//                                          {{0xBF3504F3,0x3F7746EA,0x3E8483EC,0xBF3504F4,0x3E8483F1,0xBF7746EA,0xBF3504F5,0x3F7746E8,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2},
//                                           {0xBF3504F3,0xBE8483EC,0xBE8483F1,0x3F3504F5,0x3E8483E9,0xBE8483E5,0x3F3504F0,0x3E8483D4,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF7746E9,0x3F7746EA,0xBF3504F6,0xBF7746EA,0xBF7746EE,0x3F3504EC,0x3F7746E8,0x3E8483EA,0x3F3504DD},
//                                           {0xBF3504F3,0xBF7746EA,0x3E8483E7,0x3F3504F7,0x3E8483FD,0x3F7746E8,0xBF3504FB,0xBF7746E2,0xBF7746EE,0xBF3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0xBE8483F1,0xBF7746EC,0xBF3504F0,0xBF7746E8,0x3E8483FD,0xBF3504EC,0xBE848422,0x3E8483D5,0x3F3504F2},
//                                           {0xBF3504F3,0x3E8483E9,0xBE8483FB,0xBF3504FA,0x3E8483D5,0x3E848410,0x3F3504E5,0xBE8483C1,0xBF7746E3,0x3F3504DE}},
//                                          {{0xBF3504F3,0xBF7746E9,0x3F7746EA,0xBF3504F6,0xBF7746EA,0xBF7746EE,0x3F3504EC,0x3F7746E8,0x3E8483EA,0x3F3504DD},
//                                           {0xBF3504F3,0xBF7746EA,0x3E8483E7,0x3F3504F7,0x3E8483FD,0x3F7746E8,0xBF3504FB,0xBF7746E2,0xBF7746EE,0xBF3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0xBE8483F1,0xBF7746EC,0xBF3504F0,0xBF7746E8,0x3E8483FD,0xBF3504EC,0xBE848422,0x3E8483D5,0x3F3504F2},
//                                           {0xBF3504F3,0x3E8483E9,0xBE8483FB,0xBF3504FA,0x3E8483D5,0x3E848410,0x3F3504E5,0xBE8483C1,0xBF7746E3,0x3F3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3F7746EA,0x3F3504F4,0xBF7746EA,0x3E8483F1,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0x3E8483EC,0xBF3504F4,0x3E8483F1,0xBF7746EA,0xBF3504F5,0x3F7746E8,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2}},
//                                          {{0xBF3504F3,0x3F7746EA,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3F7746EA,0x3F3504F4,0xBF7746EA,0x3E8483F1,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0x3E8483EC,0xBF3504F4,0x3E8483F1,0xBF7746EA,0xBF3504F5,0x3F7746E8,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2},
//                                           {0xBF3504F3,0xBE8483EC,0xBE8483F1,0x3F3504F5,0x3E8483E9,0xBE8483E5,0x3F3504F0,0x3E8483D4,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF7746E9,0x3F7746EA,0xBF3504F6,0xBF7746EA,0xBF7746EE,0x3F3504EC,0x3F7746E8,0x3E8483EA,0x3F3504DD},
//                                           {0xBF3504F3,0xBF7746EA,0x3E8483E7,0x3F3504F7,0x3E8483FD,0x3F7746E8,0xBF3504FB,0xBF7746E2,0xBF7746EE,0xBF3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0xBE8483F1,0xBF7746EC,0xBF3504F0,0xBF7746E8,0x3E8483FD,0xBF3504EC,0xBE848422,0x3E8483D5,0x3F3504F2}},
//                                          {{0xBF3504F3,0x3F7746EA,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3F7746EA,0x3F3504F4,0xBF7746EA,0x3E8483F1,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0x3E8483EC,0xBF3504F4,0x3E8483F1,0xBF7746EA,0xBF3504F5,0x3F7746E8,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2},
//                                           {0xBF3504F3,0xBE8483EC,0xBE8483F1,0x3F3504F5,0x3E8483E9,0xBE8483E5,0x3F3504F0,0x3E8483D4,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF7746E9,0x3F7746EA,0xBF3504F6,0xBF7746EA,0xBF7746EE,0x3F3504EC,0x3F7746E8,0x3E8483EA,0x3F3504DD},
//                                           {0xBF3504F3,0xBF7746EA,0x3E8483E7,0x3F3504F7,0x3E8483FD,0x3F7746E8,0xBF3504FB,0xBF7746E2,0xBF7746EE,0xBF3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0xBE8483F1,0xBF7746EC,0xBF3504F0,0xBF7746E8,0x3E8483FD,0xBF3504EC,0xBE848422,0x3E8483D5,0x3F3504F2}},
//                                          {{0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2},
//                                           {0xBF3504F3,0xBE8483EC,0xBE8483F1,0x3F3504F5,0x3E8483E9,0xBE8483E5,0x3F3504F0,0x3E8483D4,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF7746E9,0x3F7746EA,0xBF3504F6,0xBF7746EA,0xBF7746EE,0x3F3504EC,0x3F7746E8,0x3E8483EA,0x3F3504DD},
//                                           {0xBF3504F3,0xBF7746EA,0x3E8483E7,0x3F3504F7,0x3E8483FD,0x3F7746E8,0xBF3504FB,0xBF7746E2,0xBF7746EE,0xBF3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0xBE8483F1,0xBF7746EC,0xBF3504F0,0xBF7746E8,0x3E8483FD,0xBF3504EC,0xBE848422,0x3E8483D5,0x3F3504F2},
//                                           {0xBF3504F3,0x3E8483E9,0xBE8483FB,0xBF3504FA,0x3E8483D5,0x3E848410,0x3F3504E5,0xBE8483C1,0xBF7746E3,0x3F3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3F7746EA,0x3F3504F4,0xBF7746EA,0x3E8483F1,0xBF3504F3}}};
//    uint32 pucch_dmrs_0_im[10][10][10] = {{{0xBF3504F3,0xBF7746EA,0xBE8483E9,0x3F3504F6,0x3E8483F9,0xBF7746E8,0x3F3504FA,0xBF7746E3,0xBF7746EE,0x3F3504F4},
//                                           {0xBF3504F3,0xBF7746EC,0xBF7746E8,0xBF3504EC,0xBF7746EE,0x3F7746E6,0xBF350501,0x3F7746F0,0x3E848422,0xBF350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0xBE8483ED,0x3E8483F0,0x3F3504F4,0x3E8483EC,0x3E8483EC,0xBF3504F2,0x3E8483E7,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3E8483F0,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3E8483F1,0x3F3504F1,0x3E8483FC,0x3E8483E7,0x3F3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0x3F7746EA,0xBF7746EA,0x3F3504F1,0xBF7746EC,0xBF7746EC,0xBF3504F6,0xBF7746EE,0x3E8483F9,0x3F3504F2},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0x3E8483EE,0x3E8483EC,0xBF3504F0,0x3E8483F0,0xBE8483D4,0xBF3504FA,0xBE8483F8,0xBF7746EB,0xBF350509}},
//                                          {{0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0xBE8483ED,0x3E8483F0,0x3F3504F4,0x3E8483EC,0x3E8483EC,0xBF3504F2,0x3E8483E7,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3E8483F0,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3E8483F1,0x3F3504F1,0x3E8483FC,0x3E8483E7,0x3F3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0x3F7746EA,0xBF7746EA,0x3F3504F1,0xBF7746EC,0xBF7746EC,0xBF3504F6,0xBF7746EE,0x3E8483F9,0x3F3504F2},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0x3E8483EE,0x3E8483EC,0xBF3504F0,0x3E8483F0,0xBE8483D4,0xBF3504FA,0xBE8483F8,0xBF7746EB,0xBF350509},
//                                           {0xBF3504F3,0xBE8483F1,0x3F7746EA,0xBF3504EF,0xBF7746E8,0xBE8483F9,0x3F3504EB,0xBE848427,0x3E8483CF,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508}},
//                                          {{0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0x3F7746EA,0xBF7746EA,0x3F3504F1,0xBF7746EC,0xBF7746EC,0xBF3504F6,0xBF7746EE,0x3E8483F9,0x3F3504F2},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0x3E8483EE,0x3E8483EC,0xBF3504F0,0x3E8483F0,0xBE8483D4,0xBF3504FA,0xBE8483F8,0xBF7746EB,0xBF350509},
//                                           {0xBF3504F3,0xBE8483F1,0x3F7746EA,0xBF3504EF,0xBF7746E8,0xBE8483F9,0x3F3504EB,0xBE848427,0x3E8483CF,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF7746EA,0xBE8483E9,0x3F3504F6,0x3E8483F9,0xBF7746E8,0x3F3504FA,0xBF7746E3,0xBF7746EE,0x3F3504F4},
//                                           {0xBF3504F3,0xBF7746EC,0xBF7746E8,0xBF3504EC,0xBF7746EE,0x3F7746E6,0xBF350501,0x3F7746F0,0x3E848422,0xBF350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0xBE8483ED,0x3E8483F0,0x3F3504F4,0x3E8483EC,0x3E8483EC,0xBF3504F2,0x3E8483E7,0xBF7746EA,0x3F3504F3}},
//                                          {{0xBF3504F3,0x3E8483EE,0x3E8483EC,0xBF3504F0,0x3E8483F0,0xBE8483D4,0xBF3504FA,0xBE8483F8,0xBF7746EB,0xBF350509},
//                                           {0xBF3504F3,0xBE8483F1,0x3F7746EA,0xBF3504EF,0xBF7746E8,0xBE8483F9,0x3F3504EB,0xBE848427,0x3E8483CF,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF7746EA,0xBE8483E9,0x3F3504F6,0x3E8483F9,0xBF7746E8,0x3F3504FA,0xBF7746E3,0xBF7746EE,0x3F3504F4},
//                                           {0xBF3504F3,0xBF7746EC,0xBF7746E8,0xBF3504EC,0xBF7746EE,0x3F7746E6,0xBF350501,0x3F7746F0,0x3E848422,0xBF350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0xBE8483ED,0x3E8483F0,0x3F3504F4,0x3E8483EC,0x3E8483EC,0xBF3504F2,0x3E8483E7,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3E8483F0,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3E8483F1,0x3F3504F1,0x3E8483FC,0x3E8483E7,0x3F3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4}},
//                                          {{0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0x3F7746EA,0xBF7746EA,0x3F3504F1,0xBF7746EC,0xBF7746EC,0xBF3504F6,0xBF7746EE,0x3E8483F9,0x3F3504F2},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0x3E8483EE,0x3E8483EC,0xBF3504F0,0x3E8483F0,0xBE8483D4,0xBF3504FA,0xBE8483F8,0xBF7746EB,0xBF350509},
//                                           {0xBF3504F3,0xBE8483F1,0x3F7746EA,0xBF3504EF,0xBF7746E8,0xBE8483F9,0x3F3504EB,0xBE848427,0x3E8483CF,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF7746EA,0xBE8483E9,0x3F3504F6,0x3E8483F9,0xBF7746E8,0x3F3504FA,0xBF7746E3,0xBF7746EE,0x3F3504F4},
//                                           {0xBF3504F3,0xBF7746EC,0xBF7746E8,0xBF3504EC,0xBF7746EE,0x3F7746E6,0xBF350501,0x3F7746F0,0x3E848422,0xBF350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0xBE8483ED,0x3E8483F0,0x3F3504F4,0x3E8483EC,0x3E8483EC,0xBF3504F2,0x3E8483E7,0xBF7746EA,0x3F3504F3}},
//                                          {{0xBF3504F3,0x3E8483F0,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3E8483F1,0x3F3504F1,0x3E8483FC,0x3E8483E7,0x3F3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0x3F7746EA,0xBF7746EA,0x3F3504F1,0xBF7746EC,0xBF7746EC,0xBF3504F6,0xBF7746EE,0x3E8483F9,0x3F3504F2},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0x3E8483EE,0x3E8483EC,0xBF3504F0,0x3E8483F0,0xBE8483D4,0xBF3504FA,0xBE8483F8,0xBF7746EB,0xBF350509},
//                                           {0xBF3504F3,0xBE8483F1,0x3F7746EA,0xBF3504EF,0xBF7746E8,0xBE8483F9,0x3F3504EB,0xBE848427,0x3E8483CF,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF7746EA,0xBE8483E9,0x3F3504F6,0x3E8483F9,0xBF7746E8,0x3F3504FA,0xBF7746E3,0xBF7746EE,0x3F3504F4},
//                                           {0xBF3504F3,0xBF7746EC,0xBF7746E8,0xBF3504EC,0xBF7746EE,0x3F7746E6,0xBF350501,0x3F7746F0,0x3E848422,0xBF350508}},
//                                          {{0xBF3504F3,0x3E8483EE,0x3E8483EC,0xBF3504F0,0x3E8483F0,0xBE8483D4,0xBF3504FA,0xBE8483F8,0xBF7746EB,0xBF350509},
//                                           {0xBF3504F3,0xBE8483F1,0x3F7746EA,0xBF3504EF,0xBF7746E8,0xBE8483F9,0x3F3504EB,0xBE848427,0x3E8483CF,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF7746EA,0xBE8483E9,0x3F3504F6,0x3E8483F9,0xBF7746E8,0x3F3504FA,0xBF7746E3,0xBF7746EE,0x3F3504F4},
//                                           {0xBF3504F3,0xBF7746EC,0xBF7746E8,0xBF3504EC,0xBF7746EE,0x3F7746E6,0xBF350501,0x3F7746F0,0x3E848422,0xBF350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0xBE8483ED,0x3E8483F0,0x3F3504F4,0x3E8483EC,0x3E8483EC,0xBF3504F2,0x3E8483E7,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3E8483F0,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3E8483F1,0x3F3504F1,0x3E8483FC,0x3E8483E7,0x3F3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4}},
//                                          {{0xBF3504F3,0xBE8483ED,0x3E8483F0,0x3F3504F4,0x3E8483EC,0x3E8483EC,0xBF3504F2,0x3E8483E7,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3E8483F0,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3E8483F1,0x3F3504F1,0x3E8483FC,0x3E8483E7,0x3F3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0x3F7746EA,0xBF7746EA,0x3F3504F1,0xBF7746EC,0xBF7746EC,0xBF3504F6,0xBF7746EE,0x3E8483F9,0x3F3504F2},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0x3E8483EE,0x3E8483EC,0xBF3504F0,0x3E8483F0,0xBE8483D4,0xBF3504FA,0xBE8483F8,0xBF7746EB,0xBF350509},
//                                           {0xBF3504F3,0xBE8483F1,0x3F7746EA,0xBF3504EF,0xBF7746E8,0xBE8483F9,0x3F3504EB,0xBE848427,0x3E8483CF,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF7746EA,0xBE8483E9,0x3F3504F6,0x3E8483F9,0xBF7746E8,0x3F3504FA,0xBF7746E3,0xBF7746EE,0x3F3504F4}},
//                                          {{0xBF3504F3,0xBE8483ED,0x3E8483F0,0x3F3504F4,0x3E8483EC,0x3E8483EC,0xBF3504F2,0x3E8483E7,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3E8483F0,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3E8483F1,0x3F3504F1,0x3E8483FC,0x3E8483E7,0x3F3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0x3F7746EA,0xBF7746EA,0x3F3504F1,0xBF7746EC,0xBF7746EC,0xBF3504F6,0xBF7746EE,0x3E8483F9,0x3F3504F2},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0x3E8483EE,0x3E8483EC,0xBF3504F0,0x3E8483F0,0xBE8483D4,0xBF3504FA,0xBE8483F8,0xBF7746EB,0xBF350509},
//                                           {0xBF3504F3,0xBE8483F1,0x3F7746EA,0xBF3504EF,0xBF7746E8,0xBE8483F9,0x3F3504EB,0xBE848427,0x3E8483CF,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF7746EA,0xBE8483E9,0x3F3504F6,0x3E8483F9,0xBF7746E8,0x3F3504FA,0xBF7746E3,0xBF7746EE,0x3F3504F4}},
//                                          {{0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0x3F7746EA,0xBF7746EA,0x3F3504F1,0xBF7746EC,0xBF7746EC,0xBF3504F6,0xBF7746EE,0x3E8483F9,0x3F3504F2},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0x3E8483EE,0x3E8483EC,0xBF3504F0,0x3E8483F0,0xBE8483D4,0xBF3504FA,0xBE8483F8,0xBF7746EB,0xBF350509},
//                                           {0xBF3504F3,0xBE8483F1,0x3F7746EA,0xBF3504EF,0xBF7746E8,0xBE8483F9,0x3F3504EB,0xBE848427,0x3E8483CF,0xBF3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF7746EA,0xBE8483E9,0x3F3504F6,0x3E8483F9,0xBF7746E8,0x3F3504FA,0xBF7746E3,0xBF7746EE,0x3F3504F4},
//                                           {0xBF3504F3,0xBF7746EC,0xBF7746E8,0xBF3504EC,0xBF7746EE,0x3F7746E6,0xBF350501,0x3F7746F0,0x3E848422,0xBF350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0xBE8483ED,0x3E8483F0,0x3F3504F4,0x3E8483EC,0x3E8483EC,0xBF3504F2,0x3E8483E7,0xBF7746EA,0x3F3504F3}}};
//    uint32 pucch_dmrs_1_re[10][10][10] = {{{0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3}},
//                                          {{0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE}},
//                                          {{0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2},
//                                           {0xBF3504F3,0xBF7746E9,0x3F7746EA,0xBF3504F6,0xBF7746EA,0xBF7746EE,0x3F3504EC,0x3F7746E8,0x3E8483EA,0x3F3504DD},
//                                           {0xBF3504F3,0xBE8483F1,0xBF7746EC,0xBF3504F0,0xBF7746E8,0x3E8483FD,0xBF3504EC,0xBE848422,0x3E8483D5,0x3F3504F2},
//                                           {0xBF3504F3,0x3F7746EA,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3F7746EA,0x3F3504F4,0xBF7746EA,0x3E8483F1,0xBF3504F3},
//                                           {0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2},
//                                           {0xBF3504F3,0xBF7746E9,0x3F7746EA,0xBF3504F6,0xBF7746EA,0xBF7746EE,0x3F3504EC,0x3F7746E8,0x3E8483EA,0x3F3504DD},
//                                           {0xBF3504F3,0xBE8483F1,0xBF7746EC,0xBF3504F0,0xBF7746E8,0x3E8483FD,0xBF3504EC,0xBE848422,0x3E8483D5,0x3F3504F2},
//                                           {0xBF3504F3,0x3F7746EA,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3F7746EA,0x3F3504F4,0xBF7746EA,0x3E8483F1,0xBF3504F3},
//                                           {0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2},
//                                           {0xBF3504F3,0xBF7746E9,0x3F7746EA,0xBF3504F6,0xBF7746EA,0xBF7746EE,0x3F3504EC,0x3F7746E8,0x3E8483EA,0x3F3504DD}},
//                                          {{0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE}},
//                                          {{0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3}},
//                                          {{0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2}},
//                                          {{0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3}},
//                                          {{0xBF3504F3,0x3E8483E9,0xBE8483FB,0xBF3504FA,0x3E8483D5,0x3E848410,0x3F3504E5,0xBE8483C1,0xBF7746E3,0x3F3504DE},
//                                           {0xBF3504F3,0x3F7746EA,0x3E8483EC,0xBF3504F4,0x3E8483F1,0xBF7746EA,0xBF3504F5,0x3F7746E8,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0xBE8483EC,0xBE8483F1,0x3F3504F5,0x3E8483E9,0xBE8483E5,0x3F3504F0,0x3E8483D4,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0xBF7746EA,0x3E8483E7,0x3F3504F7,0x3E8483FD,0x3F7746E8,0xBF3504FB,0xBF7746E2,0xBF7746EE,0xBF3504F2},
//                                           {0xBF3504F3,0x3E8483E9,0xBE8483FB,0xBF3504FA,0x3E8483D5,0x3E848410,0x3F3504E5,0xBE8483C1,0xBF7746E3,0x3F3504DE},
//                                           {0xBF3504F3,0x3F7746EA,0x3E8483EC,0xBF3504F4,0x3E8483F1,0xBF7746EA,0xBF3504F5,0x3F7746E8,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0xBE8483EC,0xBE8483F1,0x3F3504F5,0x3E8483E9,0xBE8483E5,0x3F3504F0,0x3E8483D4,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0xBF7746EA,0x3E8483E7,0x3F3504F7,0x3E8483FD,0x3F7746E8,0xBF3504FB,0xBF7746E2,0xBF7746EE,0xBF3504F2},
//                                           {0xBF3504F3,0x3E8483E9,0xBE8483FB,0xBF3504FA,0x3E8483D5,0x3E848410,0x3F3504E5,0xBE8483C1,0xBF7746E3,0x3F3504DE},
//                                           {0xBF3504F3,0x3F7746EA,0x3E8483EC,0xBF3504F4,0x3E8483F1,0xBF7746EA,0xBF3504F5,0x3F7746E8,0xBF7746EA,0x3F3504F3}},
//                                          {{0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3},
//                                           {0xBF3504F3,0xBF3504F4,0x3F3504F5,0xBF3504F3,0x3F3504EF,0x3F3504EB,0xBF3504F4,0xBF350503,0x3F3504EB,0x3F3504F2},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F2,0xBF3504F4,0x3F3504F4,0x3F3504DB,0x3F3504F2,0xBF3504DE},
//                                           {0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F4,0xBF3504F3,0x3F3504F1,0x3F3504F7,0x3F3504F3,0xBF3504EB,0x3F3504EF,0x3F3504F3}},
//                                          {{0xBF3504F3,0x3F7746EA,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3F7746EA,0x3F3504F4,0xBF7746EA,0x3E8483F1,0xBF3504F3},
//                                           {0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2},
//                                           {0xBF3504F3,0xBF7746E9,0x3F7746EA,0xBF3504F6,0xBF7746EA,0xBF7746EE,0x3F3504EC,0x3F7746E8,0x3E8483EA,0x3F3504DD},
//                                           {0xBF3504F3,0xBE8483F1,0xBF7746EC,0xBF3504F0,0xBF7746E8,0x3E8483FD,0xBF3504EC,0xBE848422,0x3E8483D5,0x3F3504F2},
//                                           {0xBF3504F3,0x3F7746EA,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3F7746EA,0x3F3504F4,0xBF7746EA,0x3E8483F1,0xBF3504F3},
//                                           {0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2},
//                                           {0xBF3504F3,0xBF7746E9,0x3F7746EA,0xBF3504F6,0xBF7746EA,0xBF7746EE,0x3F3504EC,0x3F7746E8,0x3E8483EA,0x3F3504DD},
//                                           {0xBF3504F3,0xBE8483F1,0xBF7746EC,0xBF3504F0,0xBF7746E8,0x3E8483FD,0xBF3504EC,0xBE848422,0x3E8483D5,0x3F3504F2},
//                                           {0xBF3504F3,0x3F7746EA,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3F7746EA,0x3F3504F4,0xBF7746EA,0x3E8483F1,0xBF3504F3},
//                                           {0xBF3504F3,0x3E8483EC,0xBF7746EA,0x3F3504F5,0xBF7746EA,0xBE8483E9,0xBF3504F7,0x3E8483D1,0x3E8483FD,0xBF3504F2}}};
//    uint32 pucch_dmrs_1_im[10][10][10] = {{{0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3}},
//                                          {{0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508}},
//                                          {{0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0x3E8483EE,0x3E8483EC,0xBF3504F0,0x3E8483F0,0xBE8483D4,0xBF3504FA,0xBE8483F8,0xBF7746EB,0xBF350509},
//                                           {0xBF3504F3,0xBF7746EA,0xBE8483E9,0x3F3504F6,0x3E8483F9,0xBF7746E8,0x3F3504FA,0xBF7746E3,0xBF7746EE,0x3F3504F4},
//                                           {0xBF3504F3,0xBE8483ED,0x3E8483F0,0x3F3504F4,0x3E8483EC,0x3E8483EC,0xBF3504F2,0x3E8483E7,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0x3E8483EE,0x3E8483EC,0xBF3504F0,0x3E8483F0,0xBE8483D4,0xBF3504FA,0xBE8483F8,0xBF7746EB,0xBF350509},
//                                           {0xBF3504F3,0xBF7746EA,0xBE8483E9,0x3F3504F6,0x3E8483F9,0xBF7746E8,0x3F3504FA,0xBF7746E3,0xBF7746EE,0x3F3504F4},
//                                           {0xBF3504F3,0xBE8483ED,0x3E8483F0,0x3F3504F4,0x3E8483EC,0x3E8483EC,0xBF3504F2,0x3E8483E7,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0x3E8483EE,0x3E8483EC,0xBF3504F0,0x3E8483F0,0xBE8483D4,0xBF3504FA,0xBE8483F8,0xBF7746EB,0xBF350509}},
//                                          {{0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508}},
//                                          {{0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3}},
//                                          {{0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4}},
//                                          {{0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3}},
//                                          {{0xBF3504F3,0xBF7746EC,0xBF7746E8,0xBF3504EC,0xBF7746EE,0x3F7746E6,0xBF350501,0x3F7746F0,0x3E848422,0xBF350508},
//                                           {0xBF3504F3,0x3E8483F0,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3E8483F1,0x3F3504F1,0x3E8483FC,0x3E8483E7,0x3F3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0xBF7746EA,0x3F3504F1,0xBF7746EC,0xBF7746EC,0xBF3504F6,0xBF7746EE,0x3E8483F9,0x3F3504F2},
//                                           {0xBF3504F3,0xBE8483F1,0x3F7746EA,0xBF3504EF,0xBF7746E8,0xBE8483F9,0x3F3504EB,0xBE848427,0x3E8483CF,0xBF3504F4},
//                                           {0xBF3504F3,0xBF7746EC,0xBF7746E8,0xBF3504EC,0xBF7746EE,0x3F7746E6,0xBF350501,0x3F7746F0,0x3E848422,0xBF350508},
//                                           {0xBF3504F3,0x3E8483F0,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3E8483F1,0x3F3504F1,0x3E8483FC,0x3E8483E7,0x3F3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0xBF7746EA,0x3F3504F1,0xBF7746EC,0xBF7746EC,0xBF3504F6,0xBF7746EE,0x3E8483F9,0x3F3504F2},
//                                           {0xBF3504F3,0xBE8483F1,0x3F7746EA,0xBF3504EF,0xBF7746E8,0xBE8483F9,0x3F3504EB,0xBE848427,0x3E8483CF,0xBF3504F4},
//                                           {0xBF3504F3,0xBF7746EC,0xBF7746E8,0xBF3504EC,0xBF7746EE,0x3F7746E6,0xBF350501,0x3F7746F0,0x3E848422,0xBF350508},
//                                           {0xBF3504F3,0x3E8483F0,0x3F7746EA,0x3F3504F2,0xBF7746EA,0x3E8483F1,0x3F3504F1,0x3E8483FC,0x3E8483E7,0x3F3504F3}},
//                                          {{0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F2,0xBF3504F1,0x3F3504F3,0x3F3504F7,0x3F3504FB,0x3F3504F2,0x3F3504E3,0x3F3504FB,0x3F3504F4},
//                                           {0xBF3504F3,0xBF3504F3,0x3F3504F3,0x3F3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F2,0x3F35050B,0x3F3504F4,0x3F350508},
//                                           {0xBF3504F3,0xBF3504F3,0xBF3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3,0x3F3504F3,0xBF3504F3},
//                                           {0xBF3504F3,0x3F3504F4,0x3F3504F2,0xBF3504F3,0x3F3504F5,0xBF3504EF,0xBF3504F3,0xBF3504FB,0x3F3504F7,0xBF3504F3}},
//                                          {{0xBF3504F3,0xBE8483ED,0x3E8483F0,0x3F3504F4,0x3E8483EC,0x3E8483EC,0xBF3504F2,0x3E8483E7,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0x3E8483EE,0x3E8483EC,0xBF3504F0,0x3E8483F0,0xBE8483D4,0xBF3504FA,0xBE8483F8,0xBF7746EB,0xBF350509},
//                                           {0xBF3504F3,0xBF7746EA,0xBE8483E9,0x3F3504F6,0x3E8483F9,0xBF7746E8,0x3F3504FA,0xBF7746E3,0xBF7746EE,0x3F3504F4},
//                                           {0xBF3504F3,0xBE8483ED,0x3E8483F0,0x3F3504F4,0x3E8483EC,0x3E8483EC,0xBF3504F2,0x3E8483E7,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4},
//                                           {0xBF3504F3,0x3E8483EE,0x3E8483EC,0xBF3504F0,0x3E8483F0,0xBE8483D4,0xBF3504FA,0xBE8483F8,0xBF7746EB,0xBF350509},
//                                           {0xBF3504F3,0xBF7746EA,0xBE8483E9,0x3F3504F6,0x3E8483F9,0xBF7746E8,0x3F3504FA,0xBF7746E3,0xBF7746EE,0x3F3504F4},
//                                           {0xBF3504F3,0xBE8483ED,0x3E8483F0,0x3F3504F4,0x3E8483EC,0x3E8483EC,0xBF3504F2,0x3E8483E7,0xBF7746EA,0x3F3504F3},
//                                           {0xBF3504F3,0x3F7746EA,0xBE8483F1,0xBF3504F1,0x3E8483E7,0x3F7746EC,0x3F3504EF,0x3F7746EE,0xBF7746E8,0xBF3504F4}}};
//    for(uint32 i=0; i<10; i++)
//        for(uint32 j=0; j<10; j++)
//        {
//            uint32 *dmrs_0_re_ptr = (uint32 *)(&(*phy_struct)->pucch_dmrs_0_re[i][j][0]);
//            uint32 *dmrs_0_im_ptr = (uint32 *)(&(*phy_struct)->pucch_dmrs_0_im[i][j][0]);
//            uint32 *dmrs_1_re_ptr = (uint32 *)(&(*phy_struct)->pucch_dmrs_1_re[i][j][0]);
//            uint32 *dmrs_1_im_ptr = (uint32 *)(&(*phy_struct)->pucch_dmrs_1_im[i][j][0]);
//            for(uint32 k=0; k<10; k++)
//                if(dmrs_0_re_ptr[k] != pucch_dmrs_0_re[i][j][k] ||
//                   dmrs_0_im_ptr[k] != pucch_dmrs_0_im[i][j][k] ||
//                   dmrs_1_re_ptr[k] != pucch_dmrs_1_re[i][j][k] ||
//                   dmrs_1_im_ptr[k] != pucch_dmrs_1_im[i][j][k])
//                    return -1;
//        }
    if((*phy_struct)->prach_root_seq_idx != 0 || (*phy_struct)->prach_preamble_format != 0 ||
       (*phy_struct)->prach_zczc != 1 || (*phy_struct)->prach_hs_flag ||
       (*phy_struct)->prach_T_fft != (24576/(30720000/(*phy_struct)->fs)) ||
       (*phy_struct)->prach_T_seq != (24576/(30720000/(*phy_struct)->fs)) ||
       (*phy_struct)->prach_T_cp != (3168/(30720000/(*phy_struct)->fs)) ||
       (*phy_struct)->prach_delta_f_RA != 1250 || (*phy_struct)->prach_phi != 7 ||
       (*phy_struct)->prach_dft_in == NULL || (*phy_struct)->prach_dft_out == NULL ||
       (*phy_struct)->prach_fft_in == NULL || (*phy_struct)->prach_fft_out == NULL)
        return -1;
//    uint32 x_u_v_re[64] = {0x3F800000,0x3F7FA5F9,0x3F7AC8D7,0x3F6696AD,0x3F337CE3,0x3EA8644D,0xBE4F85D5,0xBF3EBC6D,0xBF7FFF8A,0xBF2BD1B6,0x3E443EE4,0x3F704E28,0x3F378B11,0xBED15B99,0xBF7C5FD7,0x3C56B72D,0x3F7FBDDA,0x3BB80BD3,0xBF7DCDFF,0x3EB6CC50,0x3F446186,0xBF6700DB,0x3DA4B292,0x3F432545,0xBF7D4670,0x3F1F6630,0xBC8A0762,0xBF03DAB4,0x3F57A4A5,0xBF7A971C,0x3F7F8A6B,0xBF7959DB,0x3F749987,0xBF767EDE,0x3F7D2246,0xBF7F5A37,0x3F6CD537,0xBF316D11,0x3E8008E4,0x3EB3361E,0xBF5FFB8E,0x3F749987,0xBEB8966E,0xBF1703EF,0x3F7CD739,0xBE5E8498,0xBF60E79C,0x3F20E515,0x3F38DFE1,0xBF2EA468,0xBF4D4A60,0x3ED697D9,0x3F7DED9C,0x3E8B2393,0xBF36DFAB,0xBF7AF9AC,0xBEF3BABC,0x3E8ED336,0x3F5253C3,0x3F7FEF76,0x3F64E5B4,0x3F283C7D,0x3ED31B1B,0x3E69BB54};
//    uint32 x_u_v_im[64] = {0x80000000,0x3D569F94,0x3E4DA521,0x3EDE652C,0x3F3689B9,0x3F71C21D,0x3F7AB016,0x3F2AC026,0xBB756548,0xBF3DC624,0xBF7B413B,0xBEB083C8,0x3F3275B3,0x3F699EBC,0xBE2BBA98,0xBF7FFA5F,0xBD37FC38,0x3F7FFEF7,0xBE05D135,0xBF6F20C6,0x3F243A1F,0x3EDCAAB3,0xBF7F2BBD,0x3F25B16F,0x3E1501E3,0xBF4851CB,0x3F7FF6B2,0xBF5B6E9D,0x3F09F6C2,0xBE516658,0xBD753FDB,0x3E67DD63,0xBE9716D0,0x3E8A3759,0xBE18CCC1,0xBD9194C4,0x3EC2620F,0xBF388AED,0x3F77DDD0,0xBF6FCE48,0x3EF7EF07,0x3E9716D0,0xBF6EC8BC,0x3F4EB696,0x3E2060D5,0xBF79E1F8,0x3EF4926F,0x3F471EC4,0xBF31148A,0xBF3B2DE8,0x3F18F19C,0x3F686DF0,0xBE0203CD,0xBF765DA2,0xBF332551,0x3E49E32D,0x3F61221E,0x3F75D67E,0x3F11F0A1,0x3CB8081C,0xBEE54705,0xBF40F517,0xBF6939F9,0xBF793DF6};
//    for(uint32 i=0; i<64; i++)
//    {
//        uint32 *x_u_v_re_ptr = (uint32 *)(&(*phy_struct)->prach_x_u_v_re[i][0]);
//        uint32 *x_u_v_im_ptr = (uint32 *)(&(*phy_struct)->prach_x_u_v_im[i][0]);
//        if(x_u_v_re_ptr[0] != x_u_v_re[i] || x_u_v_im_ptr[0] != x_u_v_im[i])
//            return -1;
//    }
//    uint32 x_u_fft_re[64] = {0x41B66623,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000};
//    uint32 x_u_fft_im[64] = {0xC18EEBF8,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000};
//    for(uint32 i=0; i<64; i++)
//    {
//        uint32 *x_u_fft_re_ptr = (uint32 *)(&(*phy_struct)->prach_x_u_fft_re[i][0]);
//        uint32 *x_u_fft_im_ptr = (uint32 *)(&(*phy_struct)->prach_x_u_fft_im[i][0]);
//        if(x_u_fft_re_ptr[0] != x_u_fft_re[i] || x_u_fft_im_ptr[0] != x_u_fft_im[i])
//        {
//            printf("%u %08X %08X %08X %08X\n", i,
//                   x_u_fft_re_ptr[0], x_u_fft_re[i],
//                   x_u_fft_im_ptr[0], x_u_fft_im[i]);
//            // 0 41B66624 41B66623 C18EEBF1 C18EEBF8
//            return -1;
//        }
//    }
    return 0;
}

static complex samp_buf[LIBLTE_PHY_N_SAMPS_PER_SUBFR_30_72MHZ*200];
static complex samp_buf2[LIBLTE_PHY_N_SAMPS_PER_SUBFR_30_72MHZ*200];
int pusch_channel_encode_decode_test(LIBLTE_PHY_STRUCT *phy_struct)
{
    LIBLTE_PHY_ALLOCATION_STRUCT alloc;
    alloc.msg[0].N_bits = 200;
    for(uint32 i=0; i<alloc.msg[0].N_bits; i++)
        alloc.msg[0].msg[i] = i%2;
    alloc.pre_coder_type = LIBLTE_PHY_PRE_CODER_TYPE_TX_DIVERSITY;
    alloc.mod_type = LIBLTE_PHY_MODULATION_TYPE_QPSK;
    alloc.chan_type = LIBLTE_PHY_CHAN_TYPE_ULSCH;
    alloc.tbs = 208;
    alloc.rv_idx = 0;
    alloc.N_prb = 8;
    for(uint32 i=0; i<8; i++)
    {
        alloc.prb[0][i] = i;
        alloc.prb[1][i] = i;
    }
    alloc.N_codewords = 1;
    alloc.N_layers = 1;
    alloc.tx_mode = 1;
    alloc.harq_retx_count = 0;
    alloc.rnti = 61;
    alloc.mcs = 0;
    alloc.tpc = 0;
    alloc.harq_process = 0;
    alloc.ndi = true;
    alloc.dl_alloc = false;
    LIBLTE_PHY_SUBFRAME_STRUCT *subframe = (LIBLTE_PHY_SUBFRAME_STRUCT *)malloc(sizeof(LIBLTE_PHY_SUBFRAME_STRUCT));
    subframe->num = 1;
    if(LIBLTE_SUCCESS != liblte_phy_pusch_channel_encode(phy_struct, &alloc,
                                                         N_ID_CELL, N_UL_ANT,
                                                         subframe))
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_create_ul_subframe(phy_struct, subframe, 0, samp_buf))
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_get_ul_subframe(phy_struct, samp_buf, subframe))
        return -1;
    LIBLTE_BIT_MSG_STRUCT msg;
    if(LIBLTE_SUCCESS != liblte_phy_pusch_channel_decode(phy_struct, subframe, &alloc,
                                                         N_ID_CELL, N_UL_ANT, 1,
                                                         msg.msg, &msg.N_bits))
        return -1;
    for(uint32 i=0; i<alloc.msg[0].N_bits; i++)
        if(msg.msg[i] != alloc.msg[0].msg[i])
            return -1;
    free(subframe);
    return 0;
}

int pucch1_ed_test(LIBLTE_PHY_STRUCT *phy_struct)
{
    LIBLTE_PHY_SUBFRAME_STRUCT *subframe = (LIBLTE_PHY_SUBFRAME_STRUCT *)malloc(sizeof(LIBLTE_PHY_SUBFRAME_STRUCT));
    subframe->num = 1;
    LIBLTE_BIT_MSG_STRUCT msg;
    msg.N_bits = 2;
    msg.msg[0] = 0;
    msg.msg[1] = 1;
    if(LIBLTE_SUCCESS != liblte_phy_pucch_format_1_1a_1b_channel_encode(phy_struct, msg.msg,
                                                                        msg.N_bits, N_UL_ANT, 0,
                                                                        LIBLTE_PHY_PUCCH_FORMAT_1B,
                                                                        subframe))
        return -1;
    for(uint32 i=0; i<16; i++)
        for(uint32 j=0; j<LIBLTE_PHY_N_RB_DL_20MHZ*LIBLTE_PHY_N_SC_RB_DL_NORMAL_CP; j++)
            subframe->rx_symb[i][j] = subframe->tx_symb[0][i][j];
    if(LIBLTE_SUCCESS != liblte_phy_pucch_format_1_1a_1b_channel_decode(phy_struct, subframe,
                                                                        LIBLTE_PHY_PUCCH_FORMAT_1B,
                                                                        N_UL_ANT, 0,
                                                                        msg.msg, &msg.N_bits))
        return -1;
    if(msg.N_bits != 2 || msg.msg[0] != 0 || msg.msg[1] != 1)
        return -1;
    free(subframe);
    return 0;
}

int pucch2_ed_test(LIBLTE_PHY_STRUCT *phy_struct)
{
    return 0;
}

int pucch_channel_encode_decode_test(LIBLTE_PHY_STRUCT *phy_struct)
{
    if(0 != pucch1_ed_test(phy_struct))
        return -1;
    if(0 != pucch2_ed_test(phy_struct))
        return -1;
    return 0;
}

int pucch_map_sr_config_idx_test(void)
{
    uint32 sr_periodicity;
    uint32 N_offset_sr;
    for(uint32 i=0; i<158; i++)
    {
        liblte_phy_pucch_map_sr_config_idx(i, &sr_periodicity, &N_offset_sr);
        if(i < 5 && sr_periodicity != 5 && N_offset_sr != i)
            return -1;
        else if(i >= 5 && i < 15 && sr_periodicity != 10 && N_offset_sr != i-5)
            return -1;
        else if(i >= 15 && i < 35 && sr_periodicity != 20 && N_offset_sr != i-15)
            return -1;
        else if(i >= 35 && i < 75 && sr_periodicity != 40 && N_offset_sr != i-35)
            return -1;
        else if(i >= 75 && i < 155 && sr_periodicity != 80 && N_offset_sr != i-75)
            return -1;
        else if(i >= 155 && i < 157 && sr_periodicity != 2 && N_offset_sr != i-155)
            return -1;
        else if(i >= 157 && sr_periodicity != 1 && N_offset_sr != i-157)
            return -1;
    }
    return 0;
}

int generate_detect_prach_test(LIBLTE_PHY_STRUCT *phy_struct)
{
    uint32 preamble_in = 0;
    uint32 freq_offset = 1;
    if(LIBLTE_SUCCESS != liblte_phy_generate_prach(phy_struct,
                                                   preamble_in,
                                                   freq_offset,
                                                   samp_buf))
        return -1;
    uint32 timing_adv[64];
    uint32 preamble_out[64];
    uint32 num_preambles;
    if(LIBLTE_SUCCESS != liblte_phy_detect_prach(phy_struct,
                                                 samp_buf,
                                                 freq_offset,
                                                 &num_preambles,
                                                 preamble_out,
                                                 timing_adv))
        return -1;
    if(num_preambles != 1 || preamble_out[0] != 33 || timing_adv[0] !=20)
        return -1;
    return 0;
}

int pdsch_channel_encode_decode_test(LIBLTE_PHY_STRUCT *phy_struct)
{
    LIBLTE_PHY_PDCCH_STRUCT pdcch;
    pdcch.N_symbs = 2;
    pdcch.N_dl_alloc = 1;
    pdcch.N_ul_alloc = 0;
    pdcch.dl_alloc[0].msg[0].N_bits = 200;
    for(uint32 i=0; i<pdcch.dl_alloc[0].msg[0].N_bits; i++)
        pdcch.dl_alloc[0].msg[0].msg[i] = i%2;
    pdcch.dl_alloc[0].pre_coder_type = LIBLTE_PHY_PRE_CODER_TYPE_TX_DIVERSITY;
    pdcch.dl_alloc[0].mod_type = LIBLTE_PHY_MODULATION_TYPE_QPSK;
    pdcch.dl_alloc[0].chan_type = LIBLTE_PHY_CHAN_TYPE_DLSCH;
    pdcch.dl_alloc[0].tbs = 208;
    pdcch.dl_alloc[0].rv_idx = 0;
    pdcch.dl_alloc[0].N_prb = 8;
    for(uint32 i=0; i<8; i++)
    {
        pdcch.dl_alloc[0].prb[0][i] = i;
        pdcch.dl_alloc[0].prb[1][i] = i;
    }
    pdcch.dl_alloc[0].N_codewords = 1;
    pdcch.dl_alloc[0].N_layers = 1;
    pdcch.dl_alloc[0].tx_mode = 1;
    pdcch.dl_alloc[0].harq_retx_count = 0;
    pdcch.dl_alloc[0].rnti = 61;
    pdcch.dl_alloc[0].mcs = 0;
    pdcch.dl_alloc[0].tpc = 0;
    pdcch.dl_alloc[0].harq_process = 0;
    pdcch.dl_alloc[0].ndi = true;
    pdcch.dl_alloc[0].dl_alloc = false;
    LIBLTE_PHY_SUBFRAME_STRUCT *subframe = (LIBLTE_PHY_SUBFRAME_STRUCT *)malloc(sizeof(LIBLTE_PHY_SUBFRAME_STRUCT));
    memset((void*)subframe, 0, sizeof(LIBLTE_PHY_SUBFRAME_STRUCT));
    subframe->num = 0;
    if(LIBLTE_SUCCESS != liblte_phy_map_crs(phy_struct, subframe, N_ID_CELL, N_DL_ANT))
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_pdsch_channel_encode(phy_struct, &pdcch,
                                                         N_ID_CELL, N_DL_ANT,
                                                         subframe))
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_create_dl_subframe(phy_struct, subframe, 0, samp_buf))
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_get_dl_subframe_and_ce(phy_struct, samp_buf, 0,
                                                           subframe->num, N_ID_CELL,
                                                           N_DL_ANT, subframe))
        return -1;
    LIBLTE_BIT_MSG_STRUCT msg;
    if(LIBLTE_SUCCESS != liblte_phy_pdsch_channel_decode(phy_struct, subframe, &pdcch.dl_alloc[0],
                                                         pdcch.N_symbs, N_ID_CELL, N_DL_ANT, 1,
                                                         msg.msg, &msg.N_bits))
        return -1;
    for(uint32 i=0; i<pdcch.dl_alloc[0].msg[0].N_bits; i++)
        if(msg.msg[i] != pdcch.dl_alloc[0].msg[0].msg[i])
            return -1;
    free(subframe);
    return 0;
}

int mod_test(LIBLTE_PHY_STRUCT *phy_struct, uint32 tbs, uint8 N_prb, LIBLTE_PHY_MODULATION_TYPE_ENUM mod_type)
{
//    LIBLTE_PHY_PDCCH_STRUCT pdcch;
//    pdcch.N_symbs = 2;
//    pdcch.N_dl_alloc = 1;
//    pdcch.N_ul_alloc = 0;
//    pdcch.dl_alloc[0].msg[0].N_bits = tbs;
//    for(uint32 i=0; i<pdcch.dl_alloc[0].msg[0].N_bits; i++)
//        pdcch.dl_alloc[0].msg[0].msg[i] = rand()/(RAND_MAX/2);
//    pdcch.dl_alloc[0].pre_coder_type = LIBLTE_PHY_PRE_CODER_TYPE_TX_DIVERSITY;
//    pdcch.dl_alloc[0].mod_type = mod_type;
//    pdcch.dl_alloc[0].chan_type = LIBLTE_PHY_CHAN_TYPE_DLSCH;
//    pdcch.dl_alloc[0].tbs = tbs;
//    pdcch.dl_alloc[0].rv_idx = 0;
//    pdcch.dl_alloc[0].N_prb = N_prb;
//    for(uint32 i=0; i<N_prb; i++)
//    {
//        pdcch.dl_alloc[0].prb[0][i] = i;
//        pdcch.dl_alloc[0].prb[1][i] = i;
//    }
//    pdcch.dl_alloc[0].N_codewords = 1;
//    pdcch.dl_alloc[0].N_layers = 1;
//    pdcch.dl_alloc[0].tx_mode = 1;
//    pdcch.dl_alloc[0].harq_retx_count = 0;
//    pdcch.dl_alloc[0].rnti = 61;
//    pdcch.dl_alloc[0].mcs = 0;
//    pdcch.dl_alloc[0].tpc = 0;
//    pdcch.dl_alloc[0].harq_process = 0;
//    pdcch.dl_alloc[0].ndi = true;
//    pdcch.dl_alloc[0].dl_alloc = false;
//    LIBLTE_PHY_SUBFRAME_STRUCT *subframe = (LIBLTE_PHY_SUBFRAME_STRUCT *)malloc(sizeof(LIBLTE_PHY_SUBFRAME_STRUCT));
//    memset(subframe, 0, sizeof(LIBLTE_PHY_SUBFRAME_STRUCT));
//    subframe->num = 0;
//    if(LIBLTE_SUCCESS != liblte_phy_map_crs(phy_struct, subframe, N_ID_CELL, N_ANT))
//        return -1;
//    if(LIBLTE_SUCCESS != liblte_phy_pdsch_channel_encode(phy_struct, &pdcch,
//                                                         N_ID_CELL, N_ANT,
//                                                         subframe))
//        return -1;
//    if(LIBLTE_SUCCESS != liblte_phy_create_dl_subframe(phy_struct, subframe, 0, samp_buf))
//        return -1;
//    if(LIBLTE_SUCCESS != liblte_phy_get_dl_subframe_and_ce(phy_struct, samp_buf, 0,
//                                                           subframe->num, N_ID_CELL,
//                                                           N_ANT, subframe))
//        return -1;
//    LIBLTE_BIT_MSG_STRUCT msg;
//    if(LIBLTE_SUCCESS != liblte_phy_pdsch_channel_decode(phy_struct, subframe, &pdcch.dl_alloc[0],
//                                                         pdcch.N_symbs, N_ID_CELL, N_ANT, 1,
//                                                         msg.msg, &msg.N_bits))
//        return -1;
//    for(uint32 i=0; i<pdcch.dl_alloc[0].msg[0].N_bits; i++)
//        if(msg.msg[i] != pdcch.dl_alloc[0].msg[0].msg[i])
//            return -1;
//    free(subframe);
    return 0;
}

uint32 tbs_71721[27][110] = {{   16,   32,   56,   88,  120,  152,  176,  208,  224,  256,  288,
                                328,  344,  376,  392,  424,  456,  488,  504,  536,  568,  600,
                                616,  648,  680,  712,  744,  776,  776,  808,  840,  872,  904,
                                936,  968, 1000, 1032, 1032, 1064, 1096, 1128, 1160, 1192, 1224,
                               1256, 1256, 1288, 1320, 1352, 1384, 1416, 1416, 1480, 1480, 1544,
                               1544, 1608, 1608, 1608, 1672, 1672, 1736, 1736, 1800, 1800, 1800,
                               1864, 1864, 1928, 1928, 1992, 1992, 2024, 2088, 2088, 2088, 2152,
                               2152, 2216, 2216, 2280, 2280, 2280, 2344, 2344, 2408, 2408, 2472,
                               2472, 2536, 2536, 2536, 2600, 2600, 2664, 2664, 2728, 2728, 2728,
                               2792, 2792, 2856, 2856, 2856, 2984, 2984, 2984, 2984, 2984, 3112},
                             {   24,   56,   88,  144,  176,  208,  224,  256,  328,  344,  376,
                                424,  456,  488,  520,  568,  600,  632,  680,  712,  744,  776,
                                808,  872,  904,  936,  968, 1000, 1032, 1064, 1128, 1160, 1192,
                               1224, 1256, 1288, 1352, 1384, 1416, 1416, 1480, 1544, 1544, 1608,
                               1608, 1672, 1736, 1736, 1800, 1800, 1864, 1864, 1928, 1992, 1992,
                               2024, 2088, 2088, 2152, 2152, 2216, 2280, 2280, 2344, 2344, 2408,
                               2472, 2472, 2536, 2536, 2600, 2600, 2664, 2728, 2728, 2792, 2792,
                               2856, 2856, 2856, 2984, 2984, 2984, 3112, 3112, 3112, 3240, 3240,
                               3240, 3240, 3368, 3368, 3368, 3496, 3496, 3496, 3496, 3624, 3624,
                               3624, 3752, 3752, 3752, 3752, 3880, 3880, 3880, 4008, 4008, 4008},
                             {   32,   72,  144,  176,  208,  256,  296,  328,  376,  424,  472,
                                520,  568,  616,  648,  696,  744,  776,  840,  872,  936,  968,
                               1000, 1064, 1096, 1160, 1192, 1256, 1288, 1320, 1384, 1416, 1480,
                               1544, 1544, 1608, 1672, 1672, 1736, 1800, 1800, 1864, 1928, 1992,
                               2024, 2088, 2088, 2152, 2216, 2216, 2280, 2344, 2344, 2408, 2472,
                               2536, 2536, 2600, 2664, 2664, 2728, 2792, 2856, 2856, 2856, 2984,
                               2984, 3112, 3112, 3112, 3240, 3240, 3240, 3368, 3368, 3368, 3496,
                               3496, 3496, 3624, 3624, 3624, 3752, 3752, 3880, 3880, 3880, 4008,
                               4008, 4008, 4136, 4136, 4136, 4264, 4264, 4264, 4392, 4392, 4392,
                               4584, 4584, 4584, 4584, 4584, 4776, 4776, 4776, 4776, 4968, 4968},
                             {   40,  104,  176,  208,  256,  328,  392,  440,  504,  568,  616,
                                680,  744,  808,  872,  904,  968, 1032, 1096, 1160, 1224, 1256,
                               1320, 1384, 1416, 1480, 1544, 1608, 1672, 1736, 1800, 1864, 1928,
                               1992, 2024, 2088, 2152, 2216, 2280, 2344, 2408, 2472, 2536, 2536,
                               2600, 2664, 2728, 2792, 2856, 2856, 2984, 2984, 3112, 3112, 3240,
                               3240, 3368, 3368, 3496, 3496, 3624, 3624, 3624, 3752, 3752, 3880,
                               3880, 4008, 4008, 4136, 4136, 4264, 4264, 4392, 4392, 4392, 4584,
                               4584, 4584, 4776, 4776, 4776, 4776, 4968, 4968, 4968, 5160, 5160,
                               5160, 5352, 5352, 5352, 5352, 5544, 5544, 5544, 5736, 5736, 5736,
                               5736, 5992, 5992, 5992, 5992, 6200, 6200, 6200, 6200, 6456, 6456},
                             {   56,  120,  208,  256,  328,  408,  488,  552,  632,  696,  776,
                                840,  904, 1000, 1064, 1128, 1192, 1288, 1352, 1416, 1480, 1544,
                               1608, 1736, 1800, 1864, 1928, 1992, 2088, 2152, 2216, 2280, 2344,
                               2408, 2472, 2600, 2664, 2728, 2792, 2856, 2984, 2984, 3112, 3112,
                               3240, 3240, 3368, 3496, 3496, 3624, 3624, 3752, 3752, 3880, 4008,
                               4008, 4136, 4136, 4264, 4264, 4392, 4392, 4584, 4584, 4584, 4776,
                               4776, 4968, 4968, 4968, 5160, 5160, 5160, 5352, 5352, 5544, 5544,
                               5544, 5736, 5736, 5736, 5992, 5992, 5992, 5992, 6200, 6200, 6200,
                               6456, 6456, 6456, 6456, 6712, 6712, 6712, 6968, 6968, 6968, 6968,
                               7224, 7224, 7224, 7480, 7480, 7480, 7480, 7736, 7736, 7736, 7992},
                             {   72,  144,  224,  328,  424,  504,  600,  680,  776,  872,  968,
                               1032, 1128, 1224, 1320, 1384, 1480, 1544, 1672, 1736, 1864, 1928,
                               2024, 2088, 2216, 2280, 2344, 2472, 2536, 2664, 2728, 2792, 2856,
                               2984, 3112, 3112, 3240, 3368, 3496, 3496, 3624, 3752, 3752, 3880,
                               4008, 4008, 4136, 4264, 4392, 4392, 4584, 4584, 4776, 4776, 4776,
                               4968, 4968, 5160, 5160, 5352, 5352, 5544, 5544, 5736, 5736, 5736,
                               5992, 5992, 5992, 6200, 6200, 6200, 6456, 6456, 6712, 6712, 6712,
                               6968, 6968, 6968, 7224, 7224, 7224, 7480, 7480, 7480, 7736, 7736,
                               7736, 7992, 7992, 7992, 8248, 8248, 8248, 8504, 8504, 8760, 8760,
                               8760, 8760, 9144, 9144, 9144, 9144, 9528, 9528, 9528, 9528, 9528},
                             {   88,  176,  256,  392,  504,  600,  712,  808,  936, 1032, 1128,
                               1224, 1352, 1480, 1544, 1672, 1736, 1864, 1992, 2088, 2216, 2280,
                               2408, 2472, 2600, 2728, 2792, 2984, 2984, 3112, 3240, 3368, 3496,
                               3496, 3624, 3752, 3880, 4008, 4136, 4136, 4264, 4392, 4584, 4584,
                               4776, 4776, 4968, 4968, 5160, 5160, 5352, 5352, 5544, 5736, 5736,
                               5992, 5992, 5992, 6200, 6200, 6456, 6456, 6456, 6712, 6712, 6968,
                               6968, 6968, 7224, 7224, 7480, 7480, 7736, 7736, 7736, 7992, 7992,
                               8248, 8248, 8248, 8504, 8504, 8760, 8760, 8760, 9144, 9144, 9144,
                               9144, 9528, 9528, 9528, 9528, 9912, 9912, 9912,10296,10296,10296,
                              10296,10680,10680,10680,10680,11064,11064,11064,11448,11448,11448},
                             {  104,  224,  328,  472,  584,  712,  840,  968, 1096, 1224, 1320,
                               1480, 1608, 1672, 1800, 1928, 2088, 2216, 2344, 2472, 2536, 2664,
                               2792, 2984, 3112, 3240, 3368, 3368, 3496, 3624, 3752, 3880, 4008,
                               4136, 4264, 4392, 4584, 4584, 4776, 4968, 4968, 5160, 5352, 5352,
                               5544, 5736, 5736, 5992, 5992, 6200, 6200, 6456, 6456, 6712, 6712,
                               6712, 6968, 6968, 7224, 7224, 7480, 7480, 7736, 7736, 7992, 7992,
                               8248, 8248, 8504, 8504, 8760, 8760, 8760, 9144, 9144, 9144, 9528,
                               9528, 9528, 9912, 9912, 9912,10296,10296,10296,10680,10680,10680,
                              11064,11064,11064,11448,11448,11448,11448,11832,11832,11832,12216,
                              12216,12216,12576,12576,12576,12960,12960,12960,12960,13536,13536},
                             {  120,  256,  392,  536,  680,  808,  968, 1096, 1256, 1384, 1544,
                               1672, 1800, 1928, 2088, 2216, 2344, 2536, 2664, 2792, 2984, 3112,
                               3240, 3368, 3496, 3624, 3752, 3880, 4008, 4264, 4392, 4584, 4584,
                               4776, 4968, 4968, 5160, 5352, 5544, 5544, 5736, 5992, 5992, 6200,
                               6200, 6456, 6456, 6712, 6968, 6968, 7224, 7224, 7480, 7480, 7736,
                               7736, 7992, 7992, 8248, 8504, 8504, 8760, 8760, 9144, 9144, 9144,
                               9528, 9528, 9528, 9912, 9912, 9912,10296,10296,10680,10680,10680,
                              11064,11064,11064,11448,11448,11448,11832,11832,12216,12216,12216,
                              12576,12576,12576,12960,12960,12960,13536,13536,13536,13536,14112,
                              14112,14112,14112,14688,14688,14688,14688,15264,15264,15264,15264},
                             {  136,  296,  456,  616,  776,  936, 1096, 1256, 1416, 1544, 1736,
                               1864, 2024, 2216, 2344, 2536, 2664, 2856, 2984, 3112, 3368, 3496,
                               3624, 3752, 4008, 4136, 4264, 4392, 4584, 4776, 4968, 5160, 5160,
                               5352, 5544, 5736, 5736, 5992, 6200, 6200, 6456, 6712, 6712, 6968,
                               6968, 7224, 7480, 7480, 7736, 7992, 7992, 8248, 8248, 8504, 8760,
                               8760, 9144, 9144, 9144, 9528, 9528, 9912, 9912,10296,10296,10296,
                              10680,10680,11064,11064,11064,11448,11448,11832,11832,11832,12216,
                              12216,12576,12576,12960,12960,12960,13536,13536,13536,13536,14112,
                              14112,14112,14112,14688,14688,14688,15264,15264,15264,15264,15840,
                              15840,15840,16416,16416,16416,16416,16992,16992,16992,16992,17568},
                             {  144,  328,  504,  680,  872, 1032, 1224, 1384, 1544, 1736, 1928,
                               2088, 2280, 2472, 2664, 2792, 2984, 3112, 3368, 3496, 3752, 3880,
                               4008, 4264, 4392, 4584, 4776, 4968, 5160, 5352, 5544, 5736, 5736,
                               5992, 6200, 6200, 6456, 6712, 6712, 6968, 7224, 7480, 7480, 7736,
                               7992, 7992, 8248, 8504, 8504, 8760, 9144, 9144, 9144, 9528, 9528,
                               9912, 9912,10296,10296,10680,10680,11064,11064,11448,11448,11448,
                              11832,11832,12216,12216,12576,12576,12960,12960,12960,13536,13536,
                              13536,14112,14112,14112,14688,14688,14688,14688,15264,15264,15264,
                              15840,15840,15840,16416,16416,16416,16992,16992,16992,16992,17568,
                              17568,17568,18336,18336,18336,18336,18336,19080,19080,19080,19080},
                             {  176,  376,  584,  776, 1000, 1192, 1384, 1608, 1800, 2024, 2216,
                               2408, 2600, 2792, 2984, 3240, 3496, 3624, 3880, 4008, 4264, 4392,
                               4584, 4776, 4968, 5352, 5544, 5736, 5992, 5992, 6200, 6456, 6712,
                               6968, 6968, 7224, 7480, 7736, 7736, 7992, 8248, 8504, 8760, 8760,
                               9144, 9144, 9528, 9528, 9912, 9912,10296,10680,10680,11064,11064,
                              11448,11448,11832,11832,12216,12216,12576,12576,12960,12960,13536,
                              13536,13536,14112,14112,14112,14688,14688,14688,15264,15264,15840,
                              15840,15840,16416,16416,16416,16992,16992,16992,17568,17568,17568,
                              18336,18336,18336,18336,19080,19080,19080,19080,19848,19848,19848,
                              19848,20616,20616,20616,21384,21384,21384,21384,22152,22152,22152},
                             {  208,  440,  680,  904, 1128, 1352, 1608, 1800, 2024, 2280, 2472,
                               2728, 2984, 3240, 3368, 3624, 3880, 4136, 4392, 4584, 4776, 4968,
                               5352, 5544, 5736, 5992, 6200, 6456, 6712, 6712, 6968, 7224, 7480,
                               7736, 7992, 8248, 8504, 8760, 8760, 9144, 9528, 9528, 9912, 9912,
                              10296,10680,10680,11064,11064,11448,11832,11832,12216,12216,12576,
                              12576,12960,12960,13536,13536,14112,14112,14112,14688,14688,15264,
                              15264,15264,15840,15840,16416,16416,16416,16992,16992,17568,17568,
                              17568,18336,18336,18336,19080,19080,19080,19080,19848,19848,19848,
                              20616,20616,20616,21384,21384,21384,21384,22152,22152,22152,22920,
                              22920,22920,23688,23688,23688,23688,24496,24496,24496,24496,25456},
                             {  224,  488,  744, 1000, 1256, 1544, 1800, 2024, 2280, 2536, 2856,
                               3112, 3368, 3624, 3880, 4136, 4392, 4584, 4968, 5160, 5352, 5736,
                               5992, 6200, 6456, 6712, 6968, 7224, 7480, 7736, 7992, 8248, 8504,
                               8760, 9144, 9144, 9528, 9912, 9912,10296,10680,10680,11064,11448,
                              11448,11832,12216,12216,12576,12960,12960,13536,13536,14112,14112,
                              14688,14688,14688,15264,15264,15840,15840,16416,16416,16992,16992,
                              16992,17568,17568,18336,18336,18336,19080,19080,19080,19848,19848,
                              19848,20616,20616,20616,21384,21384,21384,22152,22152,22152,22920,
                              22920,22920,23688,23688,23688,24496,24496,24496,25456,25456,25456,
                              25456,26416,26416,26416,26416,27376,27376,27376,27376,28336,28336},
                             {  256,  552,  840, 1128, 1416, 1736, 1992, 2280, 2600, 2856, 3112,
                               3496, 3752, 4008, 4264, 4584, 4968, 5160, 5544, 5736, 5992, 6200,
                               6456, 6968, 7224, 7480, 7736, 7992, 8248, 8504, 8760, 9144, 9528,
                               9912, 9912,10296,10680,11064,11064,11448,11832,12216,12216,12576,
                              12960,12960,13536,13536,14112,14112,14688,14688,15264,15264,15840,
                              15840,16416,16416,16992,16992,17568,17568,18336,18336,18336,19080,
                              19080,19848,19848,19848,20616,20616,20616,21384,21384,22152,22152,
                              22152,22920,22920,22920,23688,23688,24496,24496,24496,25456,25456,
                              25456,25456,26416,26416,26416,27376,27376,27376,28336,28336,28336,
                              28336,29296,29296,29296,29296,30576,30576,30576,30576,31704,31704},
                             {  280,  600,  904, 1224, 1544, 1800, 2152, 2472, 2728, 3112, 3368,
                               3624, 4008, 4264, 4584, 4968, 5160, 5544, 5736, 6200, 6456, 6712,
                               6968, 7224, 7736, 7992, 8248, 8504, 8760, 9144, 9528, 9912,10296,
                              10296,10680,11064,11448,11832,11832,12216,12576,12960,12960,13536,
                              13536,14112,14688,14688,15264,15264,15840,15840,16416,16416,16992,
                              16992,17568,17568,18336,18336,18336,19080,19080,19848,19848,20616,
                              20616,20616,21384,21384,22152,22152,22152,22920,22920,23688,23688,
                              23688,24496,24496,24496,25456,25456,25456,26416,26416,26416,27376,
                              27376,27376,28336,28336,28336,29296,29296,29296,29296,30576,30576,
                              30576,30576,31704,31704,31704,31704,32856,32856,32856,34008,34008},
                             {  328,  632,  968, 1288, 1608, 1928, 2280, 2600, 2984, 3240, 3624,
                               3880, 4264, 4584, 4968, 5160, 5544, 5992, 6200, 6456, 6712, 7224,
                               7480, 7736, 7992, 8504, 8760, 9144, 9528, 9912, 9912,10296,10680,
                              11064,11448,11832,12216,12216,12576,12960,13536,13536,14112,14112,
                              14688,14688,15264,15840,15840,16416,16416,16992,16992,17568,17568,
                              18336,18336,19080,19080,19848,19848,19848,20616,20616,21384,21384,
                              22152,22152,22152,22920,22920,23688,23688,24496,24496,24496,25456,
                              25456,25456,26416,26416,26416,27376,27376,27376,28336,28336,28336,
                              29296,29296,29296,30576,30576,30576,30576,31704,31704,31704,31704,
                              32856,32856,32856,34008,34008,34008,34008,35160,35160,35160,35160},
                             {  336,  696, 1064, 1416, 1800, 2152, 2536, 2856, 3240, 3624, 4008,
                               4392, 4776, 5160, 5352, 5736, 6200, 6456, 6712, 7224, 7480, 7992,
                               8248, 8760, 9144, 9528, 9912,10296,10296,10680,11064,11448,11832,
                              12216,12576,12960,13536,13536,14112,14688,14688,15264,15264,15840,
                              16416,16416,16992,17568,17568,18336,18336,19080,19080,19848,19848,
                              20616,20616,20616,21384,21384,22152,22152,22920,22920,23688,23688,
                              24496,24496,24496,25456,25456,26416,26416,26416,27376,27376,27376,
                              28336,28336,29296,29296,29296,30576,30576,30576,30576,31704,31704,
                              31704,32856,32856,32856,34008,34008,34008,35160,35160,35160,35160,
                              36696,36696,36696,36696,37888,37888,37888,39232,39232,39232,39232},
                             {  376,  776, 1160, 1544, 1992, 2344, 2792, 3112, 3624, 4008, 4392,
                               4776, 5160, 5544, 5992, 6200, 6712, 7224, 7480, 7992, 8248, 8760,
                               9144, 9528, 9912,10296,10680,11064,11448,11832,12216,12576,12960,
                              13536,14112,14112,14688,15264,15264,15840,16416,16416,16992,17568,
                              17568,18336,18336,19080,19080,19848,19848,20616,21384,21384,22152,
                              22152,22920,22920,23688,23688,24496,24496,24496,25456,25456,26416,
                              26416,27376,27376,27376,28336,28336,29296,29296,29296,30576,30576,
                              30576,31704,31704,31704,32856,32856,32856,34008,34008,34008,35160,
                              35160,35160,36696,36696,36696,37888,37888,37888,37888,39232,39232,
                              39232,40576,40576,40576,40576,42368,42368,42368,42368,43816,43816},
                             {  408,  840, 1288, 1736, 2152, 2600, 2984, 3496, 3880, 4264, 4776,
                               5160, 5544, 5992, 6456, 6968, 7224, 7736, 8248, 8504, 9144, 9528,
                               9912,10296,10680,11064,11448,12216,12576,12960,13536,13536,14112,
                              14688,15264,15264,15840,16416,16992,16992,17568,18336,18336,19080,
                              19080,19848,20616,20616,21384,21384,22152,22152,22920,22920,23688,
                              24496,24496,25456,25456,25456,26416,26416,27376,27376,28336,28336,
                              29296,29296,29296,30576,30576,30576,31704,31704,32856,32856,32856,
                              34008,34008,34008,35160,35160,35160,36696,36696,36696,37888,37888,
                              37888,39232,39232,39232,40576,40576,40576,40576,42368,42368,42368,
                              43816,43816,43816,43816,45352,45352,45352,46888,46888,46888,46888},
                             {  440,  904, 1384, 1864, 2344, 2792, 3240, 3752, 4136, 4584, 5160,
                               5544, 5992, 6456, 6968, 7480, 7992, 8248, 8760, 9144, 9912,10296,
                              10680,11064,11448,12216,12576,12960,13536,14112,14688,14688,15264,
                              15840,16416,16992,16992,17568,18336,18336,19080,19848,19848,20616,
                              20616,21384,22152,22152,22920,22920,23688,24496,24496,25456,25456,
                              26416,26416,27376,27376,28336,28336,29296,29296,29296,30576,30576,
                              31704,31704,31704,32856,32856,34008,34008,34008,35160,35160,35160,
                              36696,36696,36696,37888,37888,39232,39232,39232,40576,40576,40576,
                              42368,42368,42368,42368,43816,43816,43816,45352,45352,45352,46888,
                              46888,46888,46888,48936,48936,48936,48936,48936,51024,51024,51024},
                             {  488, 1000, 1480, 1992, 2472, 2984, 3496, 4008, 4584, 4968, 5544,
                               5992, 6456, 6968, 7480, 7992, 8504, 9144, 9528, 9912,10680,11064,
                              11448,12216,12576,12960,13536,14112,14688,15264,15840,15840,16416,
                              16992,17568,18336,18336,19080,19848,19848,20616,21384,21384,22152,
                              22920,22920,23688,24496,24496,25456,25456,26416,26416,27376,27376,
                              28336,28336,29296,29296,30576,30576,31704,31704,31704,32856,32856,
                              34008,34008,35160,35160,35160,36696,36696,36696,37888,37888,39232,
                              39232,39232,40576,40576,40576,42368,42368,42368,43816,43816,43816,
                              45352,45352,45352,46888,46888,46888,46888,48936,48936,48936,48936,
                              51024,51024,51024,51024,52752,52752,52752,52752,55056,55056,55056},
                             {  520, 1064, 1608, 2152, 2664, 3240, 3752, 4264, 4776, 5352, 5992,
                               6456, 6968, 7480, 7992, 8504, 9144, 9528,10296,10680,11448,11832,
                              12576,12960,13536,14112,14688,15264,15840,16416,16992,16992,17568,
                              18336,19080,19080,19848,20616,21384,21384,22152,22920,22920,23688,
                              24496,24496,25456,25456,26416,27376,27376,28336,28336,29296,29296,
                              30576,30576,31704,31704,32856,32856,34008,34008,34008,35160,35160,
                              36696,36696,36696,37888,37888,39232,39232,40576,40576,40576,42368,
                              42368,42368,43816,43816,43816,45352,45352,45352,46888,46888,46888,
                              48936,48936,48936,48936,51024,51024,51024,51024,52752,52752,52752,
                              55056,55056,55056,55056,57336,57336,57336,57336,59256,59256,59256},
                             {  552, 1128, 1736, 2280, 2856, 3496, 4008, 4584, 5160, 5736, 6200,
                               6968, 7480, 7992, 8504, 9144, 9912,10296,11064,11448,12216,12576,
                              12960,13536,14112,14688,15264,15840,16416,16992,17568,18336,19080,
                              19848,19848,20616,21384,22152,22152,22920,23688,24496,24496,25456,
                              25456,26416,27376,27376,28336,28336,29296,29296,30576,30576,31704,
                              31704,32856,32856,34008,34008,35160,35160,36696,36696,37888,37888,
                              37888,39232,39232,40576,40576,40576,42368,42368,43816,43816,43816,
                              45352,45352,45352,46888,46888,46888,48936,48936,48936,51024,51024,
                              51024,51024,52752,52752,52752,55056,55056,55056,55056,57336,57336,
                              57336,57336,59256,59256,59256,59256,61664,61664,61664,61664,63776},
                             {  584, 1192, 1800, 2408, 2984, 3624, 4264, 4968, 5544, 5992, 6712,
                               7224, 7992, 8504, 9144, 9912,10296,11064,11448,12216,12960,13536,
                              14112,14688,15264,15840,16416,16992,17568,18336,19080,19848,19848,
                              20616,21384,22152,22920,22920,23688,24496,25456,25456,26416,26416,
                              27376,28336,28336,29296,29296,30576,31704,31704,32856,32856,34008,
                              34008,35160,35160,36696,36696,36696,37888,37888,39232,39232,40576,
                              40576,42368,42368,42368,43816,43816,45352,45352,45352,46888,46888,
                              46888,48936,48936,48936,51024,51024,51024,52752,52752,52752,52752,
                              55056,55056,55056,57336,57336,57336,57336,59256,59256,59256,61664,
                              61664,61664,61664,63776,63776,63776,63776,66592,66592,66592,66592},
                             {  616, 1256, 1864, 2536, 3112, 3752, 4392, 5160, 5736, 6200, 6968,
                               7480, 8248, 8760, 9528,10296,10680,11448,12216,12576,13536,14112,
                              14688,15264,15840,16416,16992,17568,18336,19080,19848,20616,20616,
                              21384,22152,22920,23688,24496,24496,25456,26416,26416,27376,28336,
                              28336,29296,29296,30576,31704,31704,32856,32856,34008,34008,35160,
                              35160,36696,36696,37888,37888,39232,39232,40576,40576,40576,42368,
                              42368,43816,43816,43816,45352,45352,46888,46888,46888,48936,48936,
                              48936,51024,51024,51024,52752,52752,52752,55056,55056,55056,55056,
                              57336,57336,57336,59256,59256,59256,61664,61664,61664,61664,63776,
                              63776,63776,63776,66592,66592,66592,66592,68808,68808,68808,71112},
                             {  712, 1480, 2216, 2984, 3752, 4392, 5160, 5992, 6712, 7480, 8248,
                               8760, 9528,10296,11064,11832,12576,13536,14112,14688,15264,16416,
                              16992,17568,18336,19080,19848,20616,21384,22152,22920,23688,24496,
                              25456,25456,26416,27376,28336,29296,29296,30576,30576,31704,32856,
                              32856,34008,35160,35160,36696,36696,37888,37888,39232,40576,40576,
                              40576,42368,42368,43816,43816,45352,45352,46888,46888,48936,48936,
                              48936,51024,51024,52752,52752,52752,55056,55056,55056,55056,57336,
                              57336,57336,59256,59256,59256,61664,61664,61664,63776,63776,63776,
                              66592,66592,66592,68808,68808,68808,71112,71112,71112,73712,73712,
                              75376,75376,75376,75376,75376,75376,75376,75376,75376,75376,75376}};
int modulation_test(LIBLTE_PHY_STRUCT *phy_struct)
{
//    printf("\n");
//    for(uint32 i=0; i<27; i++)
//    {
//        for(uint32 j=0; j<phy_struct->N_rb_dl; j++)
//        {
//            printf("MT %u %u %u: ", i, j, tbs_71721[i][j]);
//            if(i < 10)
//            {
//                if(0 != mod_test(phy_struct, tbs_71721[i][j], j+1, LIBLTE_PHY_MODULATION_TYPE_QPSK))
//                    printf("FAIL\n");
//                else
//                    printf("PASS\n");
//            }else if(i < 16){
//                if(0 != mod_test(phy_struct, tbs_71721[i][j], j+1, LIBLTE_PHY_MODULATION_TYPE_16QAM))
//                    printf("FAIL\n");
//                else
//                    printf("PASS\n");
//            }else{
//                if(0 != mod_test(phy_struct, tbs_71721[i][j], j+1, LIBLTE_PHY_MODULATION_TYPE_64QAM))
//                    printf("FAIL\n");
//                else
//                    printf("PASS\n");
//            }
//        }
//    }
    return 0;
}

int bch_channel_encode_decode_test(LIBLTE_PHY_STRUCT *phy_struct)
{
    MasterInformationBlock mib;
    uint32 sfn = 10;
    if(0 != mib.dl_Bandwidth_SetValue(MasterInformationBlock::k_dl_Bandwidth_n25) ||
       0 != mib.phich_Config_Set()->phich_Duration_SetValue(PHICH_Config::k_phich_Duration_normal) ||
       0 != mib.phich_Config_Set()->phich_Resource_SetValue(PHICH_Config::k_phich_Resource_one) ||
       0 != mib.systemFrameNumber_SetValue(sfn/4) ||
       0 != mib.spare_SetValue(0))
        return -1;
    std::vector<uint8_t> bits;
    if(0 != mib.Pack(bits))
        return -1;

    LIBLTE_BIT_MSG_STRUCT dl_rrc_msg;
    dl_rrc_msg.N_bits = bits.size();
    for(uint32_t i=0; i<bits.size(); i++)
        dl_rrc_msg.msg[i] = bits[i];

    LIBLTE_PHY_SUBFRAME_STRUCT *subframe = (LIBLTE_PHY_SUBFRAME_STRUCT *)malloc(sizeof(LIBLTE_PHY_SUBFRAME_STRUCT));
    memset((void*)subframe, 0, sizeof(LIBLTE_PHY_SUBFRAME_STRUCT));
    subframe->num = 0;
    if(LIBLTE_SUCCESS != liblte_phy_map_crs(phy_struct, subframe, N_ID_CELL, N_DL_ANT))
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_bch_channel_encode(phy_struct, dl_rrc_msg.msg,
                                                       dl_rrc_msg.N_bits, N_ID_CELL, N_DL_ANT,
                                                       subframe, sfn))
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_create_dl_subframe(phy_struct, subframe, 0, samp_buf))
        return -1;

    if(LIBLTE_SUCCESS != liblte_phy_create_dl_subframe(phy_struct, subframe, 1, samp_buf2))
        return -1;
    for(uint32 i=0; i<LIBLTE_PHY_N_SAMPS_PER_SUBFR_30_72MHZ*200; i++)
        samp_buf[i] += samp_buf2[i];

    if(LIBLTE_SUCCESS != liblte_phy_get_dl_subframe_and_ce(phy_struct, samp_buf, 0,
                                                           subframe->num, N_ID_CELL,
                                                           N_DL_ANT, subframe))
        return -1;
    LIBLTE_BIT_MSG_STRUCT msg;
    uint8 N_ant;
    uint8 sfn_offset;
    if(LIBLTE_SUCCESS != liblte_phy_bch_channel_decode(phy_struct, subframe, N_ID_CELL, &N_ant,
                                                       msg.msg, &msg.N_bits, &sfn_offset))
        return -1;
    for(uint32 i=0; i<msg.N_bits; i++)
        if(msg.msg[i] != dl_rrc_msg.msg[i])
            return -1;
    if(N_ant != N_DL_ANT || sfn_offset != sfn%4)
        return -1;
    free(subframe);
    return 0;
}

int pdcch_channel_encode_decode_test(LIBLTE_PHY_STRUCT *phy_struct)
{
    LIBLTE_PHY_PCFICH_STRUCT pcfich;
    pcfich.cfi = 2;
    LIBLTE_PHY_PHICH_STRUCT phich;
    for(uint32 i=0; i<25; i++)
        for(uint32 j=0; j<8; j++)
            if(i%2)
            {
                if(j%2)
                    phich.present[i][j] = true;
            }else{
                if(!j%2)
                    phich.present[i][j] = false;
            }
    LIBLTE_PHY_PDCCH_STRUCT pdcch;
    pdcch.N_symbs = 2;
    pdcch.N_dl_alloc = 1;
    pdcch.N_ul_alloc = 0;
    pdcch.dl_alloc[0].pre_coder_type = LIBLTE_PHY_PRE_CODER_TYPE_TX_DIVERSITY;
    pdcch.dl_alloc[0].mod_type = LIBLTE_PHY_MODULATION_TYPE_QPSK;
    pdcch.dl_alloc[0].chan_type = LIBLTE_PHY_CHAN_TYPE_DLSCH;
    pdcch.dl_alloc[0].tbs = 208;
    pdcch.dl_alloc[0].rv_idx = 0;
    pdcch.dl_alloc[0].N_prb = 8;
    for(uint32 i=0; i<8; i++)
    {
        pdcch.dl_alloc[0].prb[0][i] = i;
        pdcch.dl_alloc[0].prb[1][i] = i;
    }
    pdcch.dl_alloc[0].N_codewords = 1;
    pdcch.dl_alloc[0].N_layers = 1;
    pdcch.dl_alloc[0].tx_mode = 1;
    pdcch.dl_alloc[0].harq_retx_count = 0;
    pdcch.dl_alloc[0].rnti = LIBLTE_MAC_SI_RNTI;
    pdcch.dl_alloc[0].mcs = 0;
    pdcch.dl_alloc[0].tpc = 0;
    pdcch.dl_alloc[0].harq_process = 0;
    pdcch.dl_alloc[0].ndi = true;
    pdcch.dl_alloc[0].dl_alloc = false;
    LIBLTE_PHY_SUBFRAME_STRUCT *subframe = (LIBLTE_PHY_SUBFRAME_STRUCT *)malloc(sizeof(LIBLTE_PHY_SUBFRAME_STRUCT));
    memset((void*)subframe, 0, sizeof(LIBLTE_PHY_SUBFRAME_STRUCT));
    subframe->num = 0;
    if(LIBLTE_SUCCESS != liblte_phy_map_crs(phy_struct, subframe, N_ID_CELL, N_DL_ANT))
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_pdcch_channel_encode(phy_struct, &pcfich, &phich,
                                                         &pdcch, N_ID_CELL, N_DL_ANT, 1.0,
                                                         PHICH_Config::k_phich_Duration_normal,
                                                         subframe))
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_create_dl_subframe(phy_struct, subframe, 0, samp_buf))
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_get_dl_subframe_and_ce(phy_struct, samp_buf, 0,
                                                           subframe->num, N_ID_CELL,
                                                           N_DL_ANT, subframe))
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_pdcch_channel_decode(phy_struct, subframe, N_ID_CELL,
                                                         N_DL_ANT, 1.0,
                                                         PHICH_Config::k_phich_Duration_normal,
                                                         &pcfich, &phich, &pdcch))
        return -1;
    if(pcfich.cfi != 2)
        return -1;
    for(uint32 i=0; i<25; i++)
        for(uint32 j=0; j<8; j++)
            if(i%2)
            {
                if(j%2 && !phich.present[i][j])
                    return -1;
            }else{
                if(!j%2 && phich.present[i][j])
                    return -1;
            }
    if(pdcch.N_symbs != 2 || pdcch.N_dl_alloc == 0 ||
       pdcch.dl_alloc[0].pre_coder_type != LIBLTE_PHY_PRE_CODER_TYPE_TX_DIVERSITY ||
       pdcch.dl_alloc[0].mod_type != LIBLTE_PHY_MODULATION_TYPE_QPSK ||
       pdcch.dl_alloc[0].chan_type != LIBLTE_PHY_CHAN_TYPE_DLSCH ||
       pdcch.dl_alloc[0].tbs != 56 || pdcch.dl_alloc[0].rv_idx != 0 ||
       pdcch.dl_alloc[0].N_prb != 8)
        return -1;
    for(uint32 i=0; i<8; i++)
        if(pdcch.dl_alloc[0].prb[0][i] != i || pdcch.dl_alloc[0].prb[1][i] != i)
            return -1;
    uint32 expected_tx_mode = 1;
    if(N_DL_ANT != 1)
        expected_tx_mode = 2;
    if(pdcch.dl_alloc[0].N_codewords != 1 || pdcch.dl_alloc[0].N_layers != 1 ||
       pdcch.dl_alloc[0].tx_mode != expected_tx_mode || pdcch.dl_alloc[0].harq_retx_count != 0 ||
       pdcch.dl_alloc[0].rnti != LIBLTE_MAC_SI_RNTI || pdcch.dl_alloc[0].mcs != 0 ||
       pdcch.dl_alloc[0].tpc != 0 || pdcch.dl_alloc[0].harq_process != 0 ||
       !pdcch.dl_alloc[0].ndi || pdcch.dl_alloc[0].dl_alloc)
        return -1;
    free(subframe);
    return 0;
}

int pss_sss_test(LIBLTE_PHY_STRUCT *phy_struct)
{
    LIBLTE_PHY_SUBFRAME_STRUCT *subframe = (LIBLTE_PHY_SUBFRAME_STRUCT *)malloc(sizeof(LIBLTE_PHY_SUBFRAME_STRUCT));
    memset((void*)subframe, 0, sizeof(LIBLTE_PHY_SUBFRAME_STRUCT));
    subframe->num = 0;
    if(LIBLTE_SUCCESS != liblte_phy_map_pss(phy_struct, subframe, N_ID_CELL%3, N_DL_ANT))
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_map_sss(phy_struct, subframe,
                                            (N_ID_CELL - (N_ID_CELL%3))/3,
                                            N_ID_CELL%3, N_DL_ANT))
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_create_dl_subframe(phy_struct, subframe, 0, samp_buf))
        return -1;
    LIBLTE_PHY_COARSE_TIMING_STRUCT timing_struct;
    timing_struct.symb_starts[0][0] = 0;
    timing_struct.symb_starts[0][1] = 512+40;
    timing_struct.symb_starts[0][2] = (512*2)+40+36;
    timing_struct.symb_starts[0][3] = (512*3)+40+(36*2);
    timing_struct.symb_starts[0][4] = (512*4)+40+(36*3);
    timing_struct.symb_starts[0][5] = (512*5)+40+(36*4);
    timing_struct.symb_starts[0][6] = (512*6)+40+(36*5);
    uint32 N_id_2;
    uint32 pss_symb;
    float pss_thresh;
    float freq_offset;
    if(LIBLTE_SUCCESS != liblte_phy_find_pss_and_fine_timing(phy_struct, samp_buf,
                                                             timing_struct.symb_starts[0],
                                                             &N_id_2, &pss_symb, &pss_thresh,
                                                             &freq_offset))
        return -1;
    if(N_id_2 != N_ID_CELL%3 || pss_symb != 6)
        return -1;
    uint32 N_id_1;
    uint32 fr_start_idx;
    timing_struct.symb_starts[0][0] = 0;
    timing_struct.symb_starts[0][1] = 512+40;
    timing_struct.symb_starts[0][2] = (512*2)+40+36;
    timing_struct.symb_starts[0][3] = (512*3)+40+(36*2);
    timing_struct.symb_starts[0][4] = (512*4)+40+(36*3);
    timing_struct.symb_starts[0][5] = (512*5)+40+(36*4);
    timing_struct.symb_starts[0][6] = (512*6)+40+(36*5);
    if(LIBLTE_SUCCESS != liblte_phy_find_sss(phy_struct, samp_buf, N_id_2,
                                             timing_struct.symb_starts[0], pss_thresh/2,
                                             &N_id_1, &fr_start_idx))
        return -1;
    if(N_id_1 != (N_ID_CELL - (N_ID_CELL%3))/3 || fr_start_idx != 0)
        return -1;
    free(subframe);
    return 0;
}

int dl_find_coarse_timing_and_freq_offset_test(LIBLTE_PHY_STRUCT *phy_struct)
{
    LIBLTE_PHY_PDCCH_STRUCT pdcch;
    pdcch.N_symbs = 2;
    pdcch.N_dl_alloc = 1;
    pdcch.N_ul_alloc = 0;
    pdcch.dl_alloc[0].msg[0].N_bits = 200;
    for(uint32 i=0; i<pdcch.dl_alloc[0].msg[0].N_bits; i++)
        pdcch.dl_alloc[0].msg[0].msg[i] = i%2;
    pdcch.dl_alloc[0].pre_coder_type = LIBLTE_PHY_PRE_CODER_TYPE_TX_DIVERSITY;
    pdcch.dl_alloc[0].mod_type = LIBLTE_PHY_MODULATION_TYPE_QPSK;
    pdcch.dl_alloc[0].chan_type = LIBLTE_PHY_CHAN_TYPE_DLSCH;
    pdcch.dl_alloc[0].tbs = 208;
    pdcch.dl_alloc[0].rv_idx = 0;
    pdcch.dl_alloc[0].N_prb = 8;
    for(uint32 i=0; i<8; i++)
    {
        pdcch.dl_alloc[0].prb[0][i] = i;
        pdcch.dl_alloc[0].prb[1][i] = i;
    }
    pdcch.dl_alloc[0].N_codewords = 1;
    pdcch.dl_alloc[0].N_layers = 1;
    pdcch.dl_alloc[0].tx_mode = 1;
    pdcch.dl_alloc[0].harq_retx_count = 0;
    pdcch.dl_alloc[0].rnti = 61;
    pdcch.dl_alloc[0].mcs = 0;
    pdcch.dl_alloc[0].tpc = 0;
    pdcch.dl_alloc[0].harq_process = 0;
    pdcch.dl_alloc[0].ndi = true;
    pdcch.dl_alloc[0].dl_alloc = false;
    LIBLTE_PHY_SUBFRAME_STRUCT *subframe = (LIBLTE_PHY_SUBFRAME_STRUCT *)malloc(sizeof(LIBLTE_PHY_SUBFRAME_STRUCT));
    memset((void*)subframe, 0, sizeof(LIBLTE_PHY_SUBFRAME_STRUCT));
    subframe->num = 0;
    if(LIBLTE_SUCCESS != liblte_phy_map_crs(phy_struct, subframe, N_ID_CELL, N_DL_ANT))
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_pdsch_channel_encode(phy_struct, &pdcch,
                                                         N_ID_CELL, N_DL_ANT,
                                                         subframe))
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_create_dl_subframe(phy_struct, subframe, 0, samp_buf))
        return -1;
    subframe->num = 1;
    if(LIBLTE_SUCCESS != liblte_phy_create_dl_subframe(phy_struct, subframe, 1,
                                                       &samp_buf[phy_struct->N_samps_per_subfr]))
        return -1;
    LIBLTE_PHY_COARSE_TIMING_STRUCT ts;
    if(LIBLTE_SUCCESS != liblte_phy_dl_find_coarse_timing_and_freq_offset(phy_struct,
                                                                          samp_buf,
                                                                          4, &ts))
        return -1;
    uint32 symb_starts[7] = {4, 552, 1100, 1648, 2196, 2744, 3292};
    for(uint32 i=0; i<5; i++)
    {
        if(ts.freq_offset[i] > 0)
        {
            if(ts.freq_offset[i] > 1)
                return -1;
        }else{
            if(ts.freq_offset[i] < -1)
                return -1;
        }
        for(uint32 j=0; j<7; j++)
        {
            if(i == 0)
            {
                if(ts.symb_starts[i][j] != symb_starts[j])
                    return -1;
            }else{
                if(ts.symb_starts[i][j] != symb_starts[j]-1)
                    return -1;
            }
        }
    }
    if(ts.n_corr_peaks != 5)
        return -1;
    free(subframe);
    return 0;
}

int gets_test(LIBLTE_PHY_STRUCT *phy_struct)
{
    uint32 tbs;
    uint8 mcs;
    uint32 N_prb;
    if(LIBLTE_SUCCESS != liblte_phy_get_tbs_mcs_and_n_prb_for_dl(15000, 3,
                                                                 LIBLTE_PHY_N_RB_DL_5MHZ,
                                                                 61, &tbs, &mcs, &N_prb))
        return -1;
    if(tbs != 15264 || mcs != 26 || N_prb != 25)
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_get_tbs_and_n_prb_for_dl(6000, LIBLTE_PHY_N_RB_DL_5MHZ,
                                                             14, &tbs, &N_prb))
        return -1;
    if(tbs != 6200 || N_prb != 24)
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_get_tbs_mcs_and_n_prb_for_ul(500, LIBLTE_PHY_N_RB_UL_5MHZ,
                                                                 &tbs, &mcs, &N_prb))
        return -1;
    if(tbs != 504 || mcs != 3 || N_prb != 9)
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_get_tbs_and_n_prb_for_ul(1400, LIBLTE_PHY_N_RB_UL_5MHZ,
                                                             14, &tbs, &N_prb))
        return -1;
    if(tbs != 1544 || N_prb != 6)
        return -1;
    uint32 N_cce;
    if(LIBLTE_SUCCESS != liblte_phy_get_n_cce(phy_struct, 1.0, 2, N_DL_ANT, &N_cce))
        return -1;
    if(N_cce != 12)
        return -1;
    return 0;
}

int ttis_test(void)
{
    if(5 != liblte_phy_add_to_tti(2, 3))
        return -1;
    if(2 != liblte_phy_add_to_tti(LIBLTE_PHY_TTI_MAX, 3))
        return -1;
    if(1 != liblte_phy_sub_from_tti(10, 9))
        return -1;
    if(LIBLTE_PHY_TTI_MAX != liblte_phy_sub_from_tti(0, 1))
        return -1;
    if(!liblte_phy_is_tti_in_future(10, 1))
        return -1;
    if(liblte_phy_is_tti_in_future(1, 10))
        return -1;
    if(!liblte_phy_is_tti_in_future(1, LIBLTE_PHY_TTI_MAX))
        return -1;
    if(!liblte_phy_is_tti_in_past(1, 10))
        return -1;
    if(liblte_phy_is_tti_in_past(10, 1))
        return -1;
    if(!liblte_phy_is_tti_in_past(LIBLTE_PHY_TTI_MAX, 1))
        return -1;
    return 0;
}

int cleanup_test(LIBLTE_PHY_STRUCT *phy_struct)
{
    if(LIBLTE_SUCCESS != liblte_phy_ul_cleanup(phy_struct))
        return -1;
    if(phy_struct->ul_init)
        return -1;
    if(LIBLTE_SUCCESS != liblte_phy_cleanup(phy_struct))
        return -1;
    return 0;
}

int main(int argc, char *argv[])
{
    LIBLTE_PHY_STRUCT *phy_struct = NULL;
    printf("init_test: ");
    if(0 != init_test(&phy_struct))
        exit(-1);
    printf("pass\n");
    printf("pusch_channel_encode_decode_test: ");
    if(0 != pusch_channel_encode_decode_test(phy_struct))
        exit(-1);
    printf("pass\n");
    printf("pucch_channel_encode_decode_test: ");
    if(0 != pucch_channel_encode_decode_test(phy_struct))
        exit(-1);
    printf("pass\n");
    printf("pucch_map_sr_config_idx_test: ");
    if(0 != pucch_map_sr_config_idx_test())
        exit(-1);
    printf("pass\n");
    printf("generate_detect_prach_test: ");
    if(0 != generate_detect_prach_test(phy_struct))
        exit(-1);
    printf("pass\n");
    printf("pdsch_channel_encode_decode_test: ");
    if(0 != pdsch_channel_encode_decode_test(phy_struct))
        exit(-1);
    printf("pass\n");
    printf("modulation_test: ");
    if(0 != modulation_test(phy_struct))
        exit(-1);
    printf("pass\n");
    printf("bch_channel_encode_decode_test: ");
    if(0 != bch_channel_encode_decode_test(phy_struct))
        exit(-1);
    printf("pass\n");
    printf("pdcch_channel_encode_decode_test: ");
    if(0 != pdcch_channel_encode_decode_test(phy_struct))
        exit(-1);
    printf("pass\n");
    printf("pss_sss_test: ");
    if(0 != pss_sss_test(phy_struct))
        exit(-1);
    printf("pass\n");
    printf("dl_find_coarse_timing_and_freq_offset_test: ");
    if(0 != dl_find_coarse_timing_and_freq_offset_test(phy_struct))
        exit(-1);
    printf("pass\n");
    printf("gets_test: ");
    if(0 != gets_test(phy_struct))
        exit(-1);
    printf("pass\n");
    printf("ttis_test: ");
    if(0 != ttis_test())
        exit(-1);
    printf("pass\n");
    printf("cleanup_test: ");
    if(0 != cleanup_test(phy_struct))
        exit(-1);
    printf("pass\n");
    exit(0);
}
